我正在使用Python从Twitter提取阿拉伯语推文并将其保存为CSV文件,但是当我在Excel中打开保存的文件时,阿拉伯语显示为符号。然而,在Python、记事本或Word内部,它看起来很好。
请问问题出在哪里?
这是我在使用 Microsoft Excel 打开包含阿拉伯字符的 CSV 文件时经常遇到的问题。请尝试以下解决方法,我已在 Windows 和 MacOS 上的最新版本的 Microsoft Excel 上进行了测试:
打开 Excel 并创建一个空白工作簿
在 数据 选项卡中,单击 从文本 按钮(如果未激活,请确保选择了一个空单元格)
浏览并 选择 CSV 文件
在文本导入向导中,将 文件源 改为 "Unicode (UTF-8)"
继续,从 分隔符 中选择您的文件中使用的定界符,例如逗号
完成 并选择导入数据的位置
阿拉伯字符应该会正确显示。
只需使用 encoding='utf-8-sig',而不是 encoding='utf-8',如下所示:
import csv
data = u"اردو"
with(open('example.csv', 'w', encoding='utf-8-sig')) as fh:
writer = csv.writer(fh)
writer.writerow([data])
它在我的电脑上运行正常。
最快的方法是在Python中将文件保存为.csv格式后:
encoding='utf-8'
encoding='utf-8-sig'
我发现从Python保存阿拉伯语到Excel文件的唯一解决方案是使用pandas并保存为xlsx扩展名,而不是csv。xlsx在这里好得多,以下是我编写的代码,对我有用:
import pandas as pd
def turn_into_csv(data, csver):
ids = []
texts = []
for each in data:
texts.append(each["full_text"])
ids.append(str(each["id"]))
df = pd.DataFrame({'ID': ids, 'FULL_TEXT': texts})
writer = pd.ExcelWriter(csver + '.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', encoding="utf-8-sig")
# Close the Pandas Excel writer and output the Excel file.
writer.save()
众所周知,Excel 的 csv 导入系统很糟糕。简而言之,如果在同一系统上导入刚刚导出的 csv 文件,则会顺利进行。否则,csv 文件应使用 Windows 系统编码和分隔符。
一种相当笨拙但稳健的系统是使用 LibreOffice 或 Oracle OpenOffice。它们在任何功能方面都远远超过 Excel,但不包括 csv 模块:它们将允许您指定 csv 文件的分隔符和可选引用字符以及编码,并且您将能够将生成的文件保存为 xslx。
尽管我的CSV文件编码是UTF-8
,但明确地再次使用记事本解决了它。
步骤: