【发布时间】:2014-02-03 13:01:56
【问题描述】:
我正在尝试转换其中包含一些 unicode 字符的文件并将其替换为普通字符。我遇到了一些问题并收到以下错误。
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-3: invalid data
我的文件如下所示:
ecteDV
ecteBl
agnéto
替换重音的代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re, sys, unicodedata, codecs
f = codecs.open(sys.argv[1], 'r', 'utf-8')
for line in f:
name = line.lower().strip()
normal = unicodedata.normalize('NFKD', name).encode('ASCII', 'ignore')
print normal
f.close()
有没有办法可以替换所有重音并规范文件的内容?
【问题讨论】:
-
您的输入文件已损坏;它包含无效的 UTF-8 数据。您是否 100% 确定它是 UTF-8 数据?
-
你也没有调用
f.close函数;你可以正常使用f.close(),或者使用f作为上下文管理器。 -
'é' 不是 utf-8 的一部分吗?
-
UTF-8 是一种编码;它可以编码
é,但也可以使用 ISO-8859 Latin 1 编码。许多其他编解码器也可以。 -
我想做的事情是我有一个文件,它有像“é”这样的重音符号,我希望它们被普通字符替换。我可以通过使用普通的 re.sub() 函数来做到这一点,但我想使用 unicodedate。
标签: python unicode utf-8 codec