使用Python创建CSV文件时,阿拉伯语文本将替换为逃生序列



我正在尝试创建一个CSV文件,该文件包含使用Tweepy收集的阿拉伯语推文,用于我正在做的项目。但是,当我写信给CSV文件时,所有阿拉伯语结果都可以通过 xxxxx序列逃脱,这一切都是很好的收集数据。如下:

xd8 xa7 xd9 x82 xd8 xa9 xd8 xa7 xa7 xd9 x84 xd9 xd9 x81 xd9 xd9 x83 x83 xd8 xd8 xb1 D8 xaa xd8 xa7 xd8 xb9 xd8 xa7 xd9 xd9 x82 xd8 xd8 xa9

我查看了许多先前问的问题,我所能找到的只是关于Python 2的建议或与我正在写的相似的答案。当我创建JSON文件时,我正在使用ensure_ascii=False,但找不到CSV类似的东西。以下是我的代码:

 with codecs.open('tweets.csv', 'a', encoding='utf-8') as file:
        fieldnames = ['tweet', 'country']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        data = {'tweet': status.text, 'country': status.place.full_name}
        writer.writerow(data)

我也尝试将.encoding='utf-8'添加到status.textstatus.place中,但这也不起作用。有任何建议吗?

您必须在编写之前确保将其解码为UTF-8中。假设status.text是类型bytes,则应类型text=status.text.decode('utf-8')。(也许您也必须为status.place.full_name执行此操作。)但是,如果它是类型str,则它将没有decode()方法。为了避免文件中的逃脱序列,无论如何都应写一个str对象。

如果您尝试指定bytes对象的编码(例如您可能拥有的对象)为" UTF-8",因为文本已经在UTF-8 bytes >。因此,要获取UTF-8 字符,必须在bytes对象上调用decode()。这样,它写入UTF-8字符而不是UTF-8字节。

最新更新