![](/img/trans.png)
[英]UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position X: character maps to <undefined>
[英]UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2247: character maps to <undefined>
當我運行代碼(Python 3)時,不斷出現此錯誤:
Traceback (most recent call last):
File "country.py", line 16, in <module>
for row in csv_reader:
File "C:\Users\benny\Anaconda3\lib\csv.py", line 112, in __next__
row = next(self.reader)
File "C:\Users\benny\Anaconda3\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 2247: character maps to <undefined>
我已經嘗試過這些解決方案,但是沒有任何效果。
如果我通過添加encoding ='UTF-8來解決編碼問題,則代碼僅打印一行。 如果我將編碼問題留在原地,它將在拋出錯誤之前先打印近700行。 無論哪種方式,它仍然無法正常工作。
import csv
import country_converter as coco
with open('Interpol.csv', 'r') as csv_file, open('Interpol_Extra.csv', 'w', newline='') as new_file:
csv_reader = csv.DictReader(csv_file)
fieldnames = ['Case Happened - UN Region', 'Case Happened - Continent',
'Recovered - UN Region', 'Recovered - Continent'] + csv_reader.fieldnames
csv_writer = csv.DictWriter(new_file, fieldnames)
csv_writer.writeheader()
for row in csv_reader:
case_country_name = row['Case happened - Country']
recovered_country_name = row['Recovered - Country']
if case_country_name:
row['Case Happened - UN Region'] = coco.convert(names=case_country_name, to='UNregion')
row['Case Happened - Continent'] = coco.convert(names=case_country_name, to='Continent')
if recovered_country_name:
row['Recovered - UN Region'] = coco.convert(names=recovered_country_name, to='UNregion')
row['Recovered - Continent'] = coco.convert(names=recovered_country_name, to='Continent')
csv_writer.writerow(row)
這是我最終使用的代碼。
正如Arun在評論中所建議的那樣,如果您遇到類似的問題,則應閱讀有關該問題的所有答案。 對於此問題,它具有有關堆棧交換的最簡潔和有用的信息。
然后重新檢查您的代碼以確保它是有效的。 就我而言,是某種錯誤的壓痕最終解決了它。
import csv
import country_converter as coco
with open('Interpol.csv', 'r', encoding="utf-8") as csv_file, open('Interpol_Extra.csv', 'w', newline='', encoding="utf-8") as new_file:
csv_reader = csv.DictReader(csv_file)
fieldnames = ['Case Happened - UN Region', 'Case Happened - Continent',
'Recovered - UN Region', 'Recovered - Continent'] + csv_reader.fieldnames
csv_writer = csv.DictWriter(new_file, fieldnames)
csv_writer.writeheader()
for row in csv_reader:
case_country_name = row['Case happened - Country']
recovered_country_name = row['Recovered - Country']
if case_country_name:
row['Case Happened - UN Region'] = coco.convert(names=case_country_name, to='UNregion')
row['Case Happened - Continent'] = coco.convert(names=case_country_name, to='Continent')
if recovered_country_name:
row['Recovered - UN Region'] = coco.convert(names=recovered_country_name, to='UNregion')
row['Recovered - Continent'] = coco.convert(names=recovered_country_name, to='Continent')
csv_writer.writerow(row)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.