我正在通过报废流程对我的CSV_table进行编码:
with open("Raw_table.csv", 'w',encoding="utf-8") as outfile:
csv_writer = csv.writer(outfile, delimiter=';', quotechar='|', quoting=csv.QUOTE_MINIMAL,)
通常,当我想使用它们时,我会使用这样的csv_parser:
def parse_csv(content, delimiter = ';'):
csv_data = []
for line in content.split('\n'):
csv_data.append( [x.strip() for x in line.split( delimiter )] ) # strips spaces also
return csv_data
list_raw=parse_csv(open('Raw_RC.csv','r',encoding="utf-8").read())
当我从美国,英格兰网站上报废时,它就有效。
在这里,我必须处理法语,西班牙语和德语的事情,当我尝试使用parse_csv
csv_writer.writerow([k] + v)
ascii' codec can't decode byte 0xc3 in position 23: ordinal not in range(128)
我该如何解决这个问题?
附属问题:
\xa0
有关吗?我不这么认为,因为我能够解析英国,美国的cdv,而且还有很多。 您所花时间的每个字节都可以用来解决这个问题! :)
答案 0 :(得分:1)
使用法语/德语/西班牙语(使用该语言编写的网站)时,请勿使用:encoding='utf-8'
,而是使用encoding='ISO-8859-1'
。
所以写作:
with open("Raw_table.csv", 'w',encoding="ISO-8859-1") as outfile:
csv_writer = csv.writer(outfile, delimiter=';', quotechar='|', quoting=csv.QUOTE_MINIMAL,)
阅读:
list_raw=parse_csv(open('Raw_RC.csv','r',encoding="ISO-8859-1").read())
\ xa0问题无关。实际上,它只发生在UTF-8中。所以我的特定法语/德语排版并不相关。 要进一步了解此问题(这不是问题的核心),请参阅tripleee建议的以下link。