[英]print (encoding/edcoding) French characters works in txt file but incorrect in excel/csv [python]
我得到了一個帶有特殊字符(應該是法語字符)的字符串,並希望它在 csv/excel 中正確顯示:
s1 = 'Benoît'
# take a look at encoding
print(s1.encode(encoding='utf-8'))
# print to txt
with open("firstname.txt", "w") as text_file:
print(s1, file=text_file)
# print to csv
import pandas as pd
df = pd.DataFrame({'FirstName': [s1]})
df.to_csv('firstname.csv', index = False)
結果 txt 文件正確顯示法語,但 csv 沒有。
我的問題是如何讓 csv 正確顯示? (我可以將法語字符從 txt 復制到 csv,但是如何以編程方式編寫 csv 並正確顯示?)
更新:感謝@snakecharmerb,我嘗試了encoding = 'utf-8-sig'
# try csv with encoding = 'utf-8-sig': doesn't work
df = pd.DataFrame({'a': [s1]})
df.to_csv('firstname.csv', index = False, encoding = 'utf-8-sig')
# read from txt file which seems to display correctly
df = pd.read_table("firstname.txt", header = None)
df
# 0
# 0 Benoît
# then write to csv with encoding = 'utf-8-sig' - works
df.to_csv('firstname1.csv', index = False, encoding = 'utf-8-sig')
Excel 不一定會識別出文件被編碼為 UTF-8。 您可以在 Excel 中打開文件時指定 UTF-8 作為編碼,也可以使用“utf-8-sig”編碼編寫 csv 文件。
'utf-8-sig' 是 Excel 的 Windows 特定版本,它插入三個字符的“字節順序標記”(BOM)和文件的開頭。 Windows 應用程序試圖猜測文件的編碼將讀取 BOM 並從 UTF-8 解碼文件。 在其他平台上可能無法識別 BOM,導致文件開頭出現三個不尋常的字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.