包含阿拉伯字符的 CSV 文件在 Excel 中显示为符号

CSV file with Arabic characters is displayed as symbols in Excel

我正在使用 python 从 Twitter 中提取阿拉伯语推文并将其保存为 CSV 文件,但是当我在 excel 中打开保存的文件时,阿拉伯语显示为符号。不过在python和notepad或者word里面,看起来还是不错的。我可以知道问题出在哪里吗?

众所周知,

Excel 有一个糟糕的 csv 导入系统。长话短说,如果您在同一系统上导入刚刚导出的 csv 文件,它将顺利运行。否则,csv 文件应使用 Windows 系统编码和分隔符。

一个相当笨拙但健壮的系统是使用 LibreOffice 或 Oracle OpenOffice。两者都远远超出 Excel 除了 csv 模块之外的任何功能:它们将允许您指定分隔符和可选的引号字符以及 csv 文件的编码,并且您将能够将生成的文件保存在 xslx 中。

这是我在使用 Microsoft Excel 打开包含阿拉伯字符的 CSV 文件时经常遇到的问题。尝试以下解决方法,我在 Windows 和 MacOS 的最新版本 Microsoft Excel 上测试过:

  1. 在空白工作簿上打开 Excel

  2. 数据 选项卡中,单击 From Text 按钮(如果没有 已激活,确保空单元格为 selected)

  3. 浏览并select CSV 文件

  4. 在文本导入向导中,将 File_origin 更改为“Unicode (UTF-8)"

  5. 下一步,从定界符,select文件中使用的定界符,例如逗号

  6. 完成和select导入数据的地方

阿拉伯字符应正确显示。

我发现将阿拉伯语从 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()

只需使用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])

它在我的机器上工作。