【问题标题】:import utf-8 csv in python3.x - special german characters在 python3.x 中导入 utf-8 csv - 特殊的德语字符
【发布时间】: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--
  1. 这只是一个输出格式问题还是我也在导入数据 错了吗?
  2. 如何打印“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


【解决方案1】:

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

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

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

正确设置Build system in Sublime 将解决问题

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多