-1

我一直在尝试导入包含特殊字符 (ä ö ü) 的 csv 文件

在 python 2.x 中,所有特殊字符都自动编码,无需在 open 命令中指定econding属性。

我不知道如何让它在python 3.x中工作

import csv

f = open('sample_1.csv', 'rU', encoding='utf-8')
csv_f = csv.reader(f, delimiter=';')

bla = list(csv_f)
print(type(bla))

print(bla[0])
print(bla[1])
print(bla[2])
print()
print(bla[3])

控制台输出(Sublime Build python3)

<class 'list'>
['\ufeffCat1', 'SEO Meta Text']
['Damen', 'Damen----']
['Damen', 'Damen-Accessoires-Beauty-Geschenk-Sets-']

Traceback (most recent call last):
  File "/Users/xxx/importer_tree.py", line 13, in <module>
    print(bla[3])
UnicodeEncodeError: 'ascii' codec can't encode character '\xf6' in position 37: ordinal not in range(128)

输入 sample_1.csv(保存为 utf-8 csv 的 Excel 文件)

Cat1;SEO Meta Text
Damen;Damen----
Damen;Damen-Accessoires-Beauty-Geschenk-Sets-
Damen;Damen-Accessoires-Beauty-Körperpflege-
Männer;Männer-Sport-Sportschuhe-Trekkingsandalen-
Männer;Männer-Sport-Sportschuhe-Wanderschuhe-
Männer;Männer-Sport-Sportschuhe--
  1. 这只是输出格式问题还是我也错误地导入了数据?
  2. 我怎样才能打印出“Männer”?

感谢您的帮助/指导!

4

1 回答 1

0

感谢juanpa-arrivillaga和这个答案:https ://stackoverflow.com/a/44088439/9059135

问题是由于我的 Sublime 设置: sys.stdout.encoding返回US-ASCII

在终端相同的命令返回UTF-8

在 Sublime 中正确设置构建系统将解决问题

于 2018-03-29T09:17:59.193 回答