python - Json 和非英语语言

标签 python

我是 Python 新手,正在努力学习它。

我试图使用 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

最佳答案

问题是默认情况下 json.dumps() 使用转义 Unicode 表示法对任何非 ASCII 字符进行编码,这在 JSON 规范中是可选的。通过将 ensure_ascii=False 传递给 dumps(),这将禁用此功能。

解决主要问题后,您将遇到的第二个问题是您将尝试打印列表。 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)

关于python - Json 和非英语语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503253/

相关文章:

python 通用类型提示 + 用户定义的容器 + 约束实现 __add__ 方法的类型

python - 如何在 Apache OpenWhisk 中使用外部 python 库?

python - 不能根据数据在现有图上绘制计算的质心值

python - 如何在python中合并pandas字符串(类似连接sql)?

python - 矢量化计算中的简单 pandas/numpy 'indexing'

python - Opencv角点检测

python - 迭代 SortedDict 中的项目片段?

python - 从运算符中分离出来,同时保留运算符

python - Django if 标签不评估相等性

python - 使用 pdb 运行时多处理代码失败?