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

问题描述 投票:0回答:7

我正在使用 python 从 Twitter 中提取阿拉伯语推文并将其保存为 CSV 文件,但是当我在 Excel 中打开保存的文件时,阿拉伯语显示为符号。然而,在 python、notepad 或 word 中,它看起来不错。

我可以知道问题出在哪里吗?

python excel csv arabic arabic-support
7个回答
47
投票

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

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

  2. Data 选项卡中,单击 From Text 按钮(如果没有 激活,确保选择空单元格)

  3. 浏览并选择 CSV 文件

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

  5. 下一步,从分隔符中选择文件中使用的分隔符,例如逗号

  6. 完成并选择导入数据的位置

阿拉伯字符应正确显示。


14
投票

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

它在我的机器上运行。


2
投票

最快的方法是将文件从 python 保存到 .csv 后:

  1. 使用 Notepad++ 打开 .csv 文件
  2. 从编码下拉菜单中选择 UTF-8-BOM
  3. 单击“另存为”并以相同名称保存,扩展名为 .csv(例如 data.csv),并保持文件类型为 .txt
  4. 使用 Microsoft Excel 重新打开文件。

1
投票

我发现从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()

1
投票

我不确定这是否是解决方案,但可能会有所帮助。


0
投票

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

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


0
投票

虽然我的 CSV 文件编码是

UTF-8
;但使用记事本再次明确重做它解决了它。

步骤:

  • 在记事本中打开 CSV 文件。
  • 单击文件 --> 另存为...
  • 在“编码”下拉列表中,选择带有 BOM 的 UTF-8。
  • 使用 .csv 扩展名重命名文件。
  • 单击“保存”。
  • 使用 Excel 重新打开保存的 CSV 文件。

© www.soinside.com 2019 - 2024. All rights reserved.