我正在尝试将urdu保存在csv文件中,但符号存储在文件中,而不是urdu文本中,我也尝试添加iso代码进行urdu编码,但无法正常工作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"
,但两者均无法正常工作。在这方面需要帮助。
答案 0 :(得分:0)
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来掩盖您的不同之处,从而使一切看起来都可以正常工作。