我正在尝试将 urdu 保存在 csv 文件中,但符号存储在文件中而不是 urdu 文本中,我也尝试添加 urdu 编码的 iso 代码,但它不起作用 ISO-8859-1
import sys
import json
import time
import csv
import codecs
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweets = api.search(q="اردو"+" -filter:retweets",count="10000")
for tweet in tweets:
if tweet.lang == "ur":
#print(tweet.text)
with open('mytweets18.csv', 'w', encoding='ISO-8859-1') as f:
writer = csv.writer(f, delimiter=';')
writer.writerow(tweet.text)
问题出在编码上。我也尝试过使用 encoding="utf-8"
,但两者都不起作用。需要有关此方面的帮助。
ISO-8859-1字符集(也称为 Latin-1)仅包含 256 个字符,大部分来自西欧。因此它无法代表您要保存的字符。
UTF-8另一方面,可以存储几乎任何您能想到的(然后是一些)支持所有 unicode 字符的内容。如果有疑问,这就是要使用的编码。
以下代码演示了使用示例中的文本保存和加载 CSV 文件:
import csv
data = u"ردو"
with(open('example.csv', 'w', encoding='utf-8')) as fh:
writer = csv.writer(fh)
writer.writerow([data])
with(open('example.csv', encoding='utf-8')) as fh:
for row in csv.reader(fh):
print(row[0], len(row[0]))
# 3 ردو (it seems backwards but Urdu is right-to-left)
您可以看到字符数已正确保留。这很重要,因为 UTF-8 将字符存储为多个字节。例如,如果您将它们加载为“iso-8859-1
”,您将得到如下乱码:
# رد٠6
这可能具有欺骗性,因为您的终端可以通过将字节重新解释为 UTF-8 来向您隐藏差异,使其看起来一切正常。
我是一名优秀的程序员,十分优秀!