【发布时间】:2018-03-29 01:42:56
【问题描述】:
我一直在尝试导入包含特殊字符 (ä ö ü) 的 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(excel 文件保存为 utf-8 csv)
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--
- 这只是一个输出格式问题还是我也在导入数据 错了吗?
- 如何打印“Männer”?
感谢您的帮助/指导!
【问题讨论】:
-
问题似乎是您的 终端 未配置为打印 unicode
-
所以,检查
import sys; print(sys.stdout.encoding) -
导入系统; print(sys.stdout.encoding) 返回 US-ASCII
-
那么肯定是问题所在。你的本地设置是 UTF-8 吗?
-
谢谢!在终端中,我的 stdout.encoding 设置为 UTF-8 实际上,通过终端启动时,csv 已正确导入。唯一的问题是当通过 Sublime (US-ASCII) 启动构建时,是否可以切换到 utf-8 而不会弄乱环境变量?
标签: python encoding utf-8 import-csv