【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode characters in position 23-24: ordinal not in range(128) [duplicate]UnicodeEncodeError:“ascii”编解码器无法对位置 23-24 中的字符进行编码:序数不在范围内(128)[重复]
【发布时间】:2018-09-29 12:14:59
【问题描述】:

我正在尝试解析包含文本下方文本的 csv (test.csv)

"legalgroup_text"   "Aktiebolag"    "Aktiebolag"    "LGAKTIEBOLAG"
"legalgroup_text"   "Allmän försäkringskassa"   "Allmän försäkringskassa"   "LGALLMAENFOERSAEKRINGSKASSA"

我正在使用编码iso-8859-1,因为该文件包含瑞典字符

import codecs
import csv

with codecs.open('test.csv', encoding='iso-8859-1') as label_file:
    data = csv.reader(label_file, delimiter='\t')
    for row in data:
        print(row)

我遇到了错误

Traceback (most recent call last):
File "/mnt/ashraful/PycharmProjects/Test/test.py", line 6, in <module>
    for row in data:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 23-24: ordinal not in range(128)

我也尝试过编码utf-8,但出现错误

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 25: ordinal not in range(128)

【问题讨论】:

  • 第二行,特别是ä 字符
  • 这一行for row in data:
  • 如果可以的话,你真的应该迁移到 Python 3。

标签: python python-2.7 python-unicode


【解决方案1】:

放弃 Python 2 并使用 Python 3。它本身(没有其他更改,我刚刚测试过)将解决问题。

【讨论】:

  • 为什么人们坚持使用 python 2 并抱怨 unicode 错误是一个谜!
  • @tdelaney 我很同情。有些人确实有正当理由仍在使用 py2。不过,Unicode 支持不是其中之一
  • 我在 python 3 上遇到了这个错误
  • 这并不总能修复编码错误,而且对于某些环境来说,迁移到 Python 3 并不总是可行或现实的。
猜你喜欢
  • 2017-12-18
  • 1970-01-01
  • 2012-08-05
  • 2020-07-27
  • 2012-07-17
  • 2018-04-28
  • 2014-03-08
  • 2015-09-26
  • 2017-02-28
相关资源
最近更新 更多