因此,我遇到了一个编码问题,原因是在 Python 中将字典写入 csv。
这是一个示例代码:
import csv
some_list = ['jalape\xc3\xb1o']
with open('test_encode_output.csv', 'wb') as csvfile:
output_file = csv.writer(csvfile)
for item in some_list:
output_file.writerow([item])
这工作得很好,给了我一个 csv 文件,里面写着“jalapeño”。
但是,当我创建包含此类 UTF-8 字符的值的字典列表时...
import csv
some_list = [{'main': ['4 dried ancho chile peppers, stems, veins
and seeds removed']}, {'main': ['2 jalape\xc3\xb1o
peppers, seeded and chopped', '1 dash salt']}]
with open('test_encode_output.csv', 'wb') as csvfile:
output_file = csv.writer(csvfile)
for item in some_list:
output_file.writerow([item])
我刚刚得到一个包含 2 行的 csv 文件,其中包含以下条目:
{'main': ['4 dried ancho chile peppers, stems, veins and seeds removed']}
{'main': ['2 jalape\xc3\xb1o peppers, seeded and chopped', '1 dash salt']}
我知道我的东西是用正确的编码写的,但是因为它们不是字符串,所以当它们被 csv.writer 写出时,它们是按原样写的。这令人沮丧。我在这里搜索了一些类似的问题,人们提到过使用 csv.DictWriter 但这对我来说效果并不好,因为我的字典列表不仅仅是 1 key 'main'
。有些还有其他键,例如'toppings'
,'crust'
等。不仅如此,我还在对它们做更多的工作,最终输出是将成分格式化为数量,单位,成分,所以我最终会得到一个字典列表,如
[{'main': {'amount': ['4'], 'unit': [''],
'ingredient': ['dried ancho chile peppers']}},
{'topping': {'amount': ['1'], 'unit': ['pump'],
'ingredient': ['cool whip']}, 'filling':
{'amount': ['2'], 'unit': ['cups'],
'ingredient': ['strawberry jam']}}]
说真的,任何帮助都将不胜感激,否则我必须在 LibreOffice 中使用查找和替换来修复所有这些 \x** UTF-8 编码。
谢谢!