包含阿拉伯字符的 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 上测试过:
在空白工作簿上打开 Excel
在 数据 选项卡中,单击 From Text 按钮(如果没有
已激活,确保空单元格为 selected)
浏览并select CSV 文件
在文本导入向导中,将 File_origin 更改为“Unicode (UTF-8)"
下一步,从定界符,select文件中使用的定界符,例如逗号
完成和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])
它在我的机器上工作。
我正在使用 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 上测试过:
在空白工作簿上打开 Excel
在 数据 选项卡中,单击 From Text 按钮(如果没有 已激活,确保空单元格为 selected)
浏览并select CSV 文件
在文本导入向导中,将 File_origin 更改为“Unicode (UTF-8)"
下一步,从定界符,select文件中使用的定界符,例如逗号
完成和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])
它在我的机器上工作。