如何在python中读取json对象[重复]
Posted
技术标签:
【中文标题】如何在python中读取json对象[重复]【英文标题】:how to read json object in python [duplicate] 【发布时间】:2018-05-31 03:04:53 【问题描述】:我有一个名为 "panamaleaks50k.json" 的 json 文件。我想从 json 文件中获取 ['text'] 字段,但它显示我出现以下错误
JSON 对象必须是 str、bytes 或 bytearray,而不是 'TextIOWrapper'
这是我的代码
with open('C:/Users/bilal butt/Desktop/PanamalEakJson.json','r') as lst:
b = json.loads(lst)
print(b['text'])
我的 json 文件外观
[
"fullname": "Mohammad Fayyaz",
"id": "885800668862263296",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "Love of NS has been shown in PanamaLeaks scandal verified by JIT...",
"timestamp": "2017-07-14T09:58:31",
"url": "/mohammadfayyaz/status/885800668862263296",
"user": "mohammadfayyaz"
,
"fullname": "TeamPakistanPTI \u00ae",
"id": "885800910357749761",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "RT ArsalanISF: #PanamaLeaks is just a start. U won't believe whr...",
"timestamp": "2017-07-14T09:59:29",
"url": "/PtiTeampakistan/status/885800910357749761",
"user": "PtiTeampakistan"
]
我如何阅读所有 ['text'] 和单个 ['text'] 字段?
【问题讨论】:
【参考方案1】:如果您的输入是类似文件的对象(例如 TextIOWrapper),请使用 json.load()
,而不是 json.loads()
。
给定以下完整的复制器:
import json, tempfile
with tempfile.NamedTemporaryFile() as f:
f.write(b'"text": "success"'); f.flush()
with open(f.name,'r') as lst:
b = json.load(lst)
print(b['text'])
...输出为success
。
【讨论】:
标记社区 wiki 以避免从已知的骗子那里获得代表。人们应该随意编辑/修改,尽管链接的答案应该被认为更规范。 我在使用 load() 函数时遇到了这个错误。 ` JSON 对象必须是 str、bytes 或 bytearray,而不是 'TextIOWrapper'` @BilalButt,load()
不会产生该错误——与问题中的代码使用的loads()
不同,load()
接受类似文件的对象作为输入。如果您断言确实如此,请编辑您的问题以添加minimal reproducible example - 其他人可以运行的最短代码,无需修改,自己查看问题。 (现在缩进是错误的,除了你之外没有人会拥有一个C:\Users\bilal butt
目录,所以这不是其他人可以调用的代码)。
感谢您的快速回复。我在我的问题中编辑 json 文件。
文件的内容不相关——文件可能只包含[]
,错误将完全相同。因此,minimal 复制器不需要包含超过 []
的任何内容作为被解析的文件内容(但 应该 实际上创建一个包含这些内容的文件,如果可以的话'没有一个就不能复制)。【参考方案2】:
您应该将文件 contents(即字符串)传递给json.loads()
,而不是文件对象本身。试试这个:
with open(file_path) as f:
data = json.loads(f.read())
print(data[0]['text'])
还有json.load()
函数,它接受一个文件对象并在后台为您执行f.read()
部分。
【讨论】:
一个字母 's' 的不同之处很有趣。恕我直言,这两种函数方法的命名应该在彼此之间更加引人注目。 @programmer dreamers
表示这个解析的是一个字符串。
完美,这对我有帮助。以上是关于如何在python中读取json对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章