【问题标题】:Reading Turkish characters from CSV file in Python 3.8在 Python 3.8 中从 CSV 文件中读取土耳其语字符
【发布时间】:2020-04-24 18:51:46
【问题描述】:

我想为自己编写一个简单的词典程序,将未知的英语单词和含义存储在一个 csv 文件中,每次我运行该程序时,它都会将所有英语单词打乱并让我输入正确的土耳其语翻译。我试图读取我的 csv 文件进行测试,但它无法识别土耳其字符。 (如下所示)我在 open() 函数中添加了 encoding='utf-8' 参数。我该怎么办?

我可以尝试其他解决方案,而不是从 csv 文件中读取它,我是 python 新手,对读取文件知之甚少。

代码:

import csv
english_words = []
turkish_words = []

with open('all_words.csv' , encoding='utf-8') as words_csv:
    words = csv.DictReader(words_csv)
    for row in words:
        english_words.append(row['english'])
        turkish_words.append(row['turkish'])

print(english_words)
print(turkish_words)

输出:

['immersion', 'brow', 'intact', 'snort', 'demented', 'supper', 'envy', 'unconventional', 'improvise', 'indulge', 'slumber', 'itenarary', 'occasional', 'aberrant', 'grotesque', 'mettle', 'rind', 'inconsistencies', 'repetitions', 'cease', 'errands', 'pluck', 'cruel', 'reveries', 'decommission', 'mischief']
['dald²rma', 'ka■', 'bozulmam²■', 'homurdanma', 'Bunak', 'ak■am yeme­i', 'imrenme', 'al²■²lmad²k', 'do­alama', '■²martmak', 'uyuklama', 'yol k²lavuzu', 'nadiren', 'anormal', 'grotesk', '■evk', 'd²■ y³zey', 'tutars²zl²klar ', 'tekrarlar²', 'durdurmak', 'ayak i■leri', 'yolmak', 'zalim', 'h³lyalar', 'faaliyetine son', 'yarmazl²k']

我的 csv 文件示例:

english,turkish
immersion,daldırma
brow,kaş
intact,bozulmamış
snort,homurdanma
demented,Bunak
supper,akşam yemeği
envy,imrenme
unconventional,alışılmadık
improvise,doğaçlama
indulge,şımartmak
slumber,uyuklama
itenarary,yol kılavuzu
occasional,nadiren
aberrant,anormal
grotesque,grotesk
mettle,şevk
rind,dış yüzey
inconsistencies,tutarsızlıklar 
repetitions,tekrarları
cease,durdurmak
errands,ayak işleri
pluck,yolmak
cruel,zalim
reveries,hülyalar
decommission,faaliyetine son
mischief,yarmazlık

【问题讨论】:

  • 我猜你的输入文件不是 UTF-8 编码的……
  • 试图在 excel 中更改它,保存为 UTF-8 csv 文件,现在我在尝试读取时遇到 KeyError。
  • 请显示您的 CSV 样本(转换为 UTF-8 后)。将其添加到问题中。
  • 照你说的做了@Błotosmętek

标签: python csv


【解决方案1】:

我想我明白了:您的 CSV 文件是 UTF-8 带有 BOM; Python为此使用utf-8-sig 名称。只需将encoding='utf-8' 更改为encoding='utf-8-sig' 即可。

【讨论】:

  • 试过了,没用。将所有不同格式的csv文件保存在excel中,再次得到相同的结果。
  • “相同的结果”即。 KeyError?如果是这样,请用append 注释掉这两行,然后将print(row) 放在那里;看看打印的内容。
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多