如何从Python中的单编码JSONObject中提取String?

时间:2018-06-13 12:50:18

标签: python json

当我尝试使用Unicodes(如'symbol and Emojis等)解析字符串时,我收到以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\U0001f33b' in position 19: ordinal not in range(128)

示例对象:

{"user":{"name":"\u0e2a\u0e31\u0e48\u0e07\u0e14\u0e48\u0e27\u0e19 \u0e2b\u0e21\u0e14\u0e44\u0e27 \u0e40\u0e14\u0e23\u0e2a\u0e41\u0e1f\u0e0a\u0e31\u0e48\u0e19\u0e21\u0e32\u0e43\u0e2b\u0e21\u0e48 \u0e23\u0e32\u0e04\u0e32\u0e40\u0e1a\u0e32\u0e46 \u0e2a\u0e48\u0e07\u0e17\u0e31\u0e48\u0e27\u0e44\u0e17\u0e22 \u0e44\u0e14\u0e49\u0e02\u0e2d\u0e07\u0e0a\u0e31\u0e27\u0e23\u0e4c\u0e08\u0e49\u0e32 \u0e2a\u0e19\u0e43\u0e08\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21 Is it","tag":"XYZ"}}

我能够提取标签值,但我无法提取名称值。

这是我的代码:

dict = json.loads(json_data)
print('Tag - 'dict['user']['tag'])
print('Name - 'dict['user']['name'])

1 个答案:

答案 0 :(得分:0)

您可以将数据保存为CSV文件格式,也可以使用Excel打开。当您以这种方式打开文件时:open(filename, "w")然后您只能存储ASCII字符,但如果您尝试以这种方式存储Unicode数据,则会得到UnicodeEncodeError。为了存储Unicode数据,您需要使用UTF-8编码打开文件。

mydict = json.loads(json_data)  # or whatever dictionary it is...

# Open the file with UTF-8 encoding, most important step
f = open("userdata.csv", "w", encoding='utf-8')

f.write(mydict['user']['name'] + ", " + mydict['user']['tag'] + "\n")
f.close()

根据您拥有的数据随意更改代码 就是这样......