JSON和非英语语言

问题描述:

我是新来的Python和努力学习它。JSON和非英语语言

我试图用Tweepy和保存的鸣叫,因为我的查询是“阿拉伯语”的结果似乎是奇怪的是这样的:

"created_at": "Mon Jun 12 15:12:50 +0000 2017", "id": 874283356158033920, "id_str": "874283356158033920", "text": "\\u0637\\u0627\\u0644\\u0628\\u0629 \\u062c\\u0633\\u0645\\u0647\\u0627 \\u062c\\u0628\\u0627\\u0631 \\u062a\\u062a\\u062e\\u062f \\u0645\\u0646 \\u0627\\u0644\\u0634\\u0627\\u0631\\u0639 \\u0648 \\u062a\\u062a\\u0646\\u0627\\u0643..\\n\\n\\u0633\\u0643\\u0633_\\u0627\\u062c\\u0646\\u0628\\u064a\\n\\u0645\\u0642\\u0627\\u0637\\u0639_\\u0633\\u0643\\u0633\\nbabes\\n2236 ", "truncated": false, "entities" 

我试过很多次,在这里看到了许多类似的问题但找不到答案。 Json是否支持阿拉伯语?

这里是我的代码:

import tweepy 
import json 
from pprint import pprint 
import time 
auth = tweepy.OAuthHandler("", "") 
auth.set_access_token("", "") 
api = tweepy.API(auth) 
max_tweets=100 
query='الشارع' 
searched_tweets = [status._json for status in tweepy.Cursor(api.search, q=query).items(max_tweets)] 
json_strings = [json.dumps(json_obj) for json_obj in searched_tweets] 
print(json_strings) 

我使用Python3

+3

这里唯一的问题是,你要打印序列化JSON的列表,而不是串行化的列表。 – jwodder

+0

[Unicode阿拉伯文字符串用户它]的可能的复制(https://stackoverflow.com/questions/37555473/unicode-arabic-string-to-user-it) – Dan

+0

https://stackoverflow.com/questions/15196321/如何做我输入阿拉伯语文本到我的python代码 – oshaiken

的问题是,在默认情况下使用json.dumps()逃脱Unicode的符号,编码任何非ASCII字符,这在JSON规格可选。通过传递ensure_ascii=Falsedumps(),这将禁用此功能。

你必须一旦你固定的主要问题的第二个问题,是你尝试打印列表。 Python会列出一个表示的列表,包括其中的数据表示。这意味着数据包含文字和打印数据的安全方式。

对于字符串,这意味着对象印刷有报价和任何非ASCII字符被打印为Unicode转义序列。

尝试:

json_strings = [json.dumps(json_obj, ensure_ascii=False) for json_obj in searched_tweets] 
for tweet in json_strings: 
    print(tweet) 
+0

您将不得不提供更多信息 –

+0

我在代码中复制了您的代码,并且出现了相同的结果。 – Mahran

+0

好的,在'dumps'中加入'ensure_ascii = false'。我会解释,如果它工作 –