Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中将unicode字符串加载到json中?_Python_Json_Unicode_Tarfile - Fatal编程技术网

如何在Python中将unicode字符串加载到json中?

如何在Python中将unicode字符串加载到json中?,python,json,unicode,tarfile,Python,Json,Unicode,Tarfile,我试图从压缩文件中读取文件,并将数据转换为json/字典。但有一个unicode的问题,我已经挣扎了一段时间。有人能帮忙吗 exfile_obj = tar.extractfile(member) data = exfile_obj.read() print(type(data)) ## shows str print(data) ## it is something like: "{u'building': False, u'displayName': u'Tam\\xe1s Kosztol

我试图从压缩文件中读取文件,并将数据转换为json/字典。但有一个unicode的问题,我已经挣扎了一段时间。有人能帮忙吗

exfile_obj = tar.extractfile(member)
data = exfile_obj.read()
print(type(data)) ## shows str
print(data)  ## it is something like: "{u'building': False, u'displayName': u'Tam\\xe1s Kosztol\\xe1nczi', u'changeSet': {u'items': u'comment'}}"
json_obj = json.loads(data) # it is a unicode object.

该数据是Python字典的字符串表示形式。您可以使用
ast.literal\u eval
将其转换为字典,也可以使用
JSON.dumps
将该dict转换为JSON字符串

import ast
import json

src = "{u'building': False, u'displayName': u'Tam\\xe1s Kosztol\\xe1nczi', u'changeSet': {u'items': u'comment'}}"
data = ast.literal_eval(src)
print(data)
j = json.dumps(data)
print(j)
输出

{'building': False, 'displayName': 'Tamás Kosztolánczi', 'changeSet': {'items': 'comment'}}
{"building": false, "displayName": "Tam\u00e1s Kosztol\u00e1nczi", "changeSet": {"items": "comment"}}

您的示例返回一个dict(data=ast.literal\u eval(src))。但奇怪的是,当我相应地修改代码时,它并没有像我预期的那样返回。它仍然返回一个str。我更改的代码是:exfile_obj=tar.extractfile(member)data=exfile_obj.read()print(type(data))json_obj=ast.literal_eval(data)print(type(json_obj))####这是一个strw,我还发现当ast.literal_eval使用with open(“example.json”)作为文件从文件获取输入时:src=f.read()(不是从变量中)它返回str。但是如果ast.literal\u eval从变量中得到输入,当我从文件中读取时,它返回一个dict。数据如下:“{u'building\':False,u'displayName\':u'Tam\\\\xe1s koszol\\\\xe1nczi\',u'changeSet\':{u'items\':u'comment\}”\n'@PM 2ring我想我找到了原因。json文件的格式不正确。它是str类型而不是json类型。一旦从文件中删除引号,这个解决方案就起作用了。谢谢。