Python 解码和编码,列表元素 utf-8
Python Decoding and Encoding, List Element utf-8
我认为 python 只是另一个关于编码的问题。我有这个程序:
regex = re.compile(ur'\b[sw]\w+', flags= re.U | re.I)
ergebnisliste = []
for line in fileobject:
print str(line)
erg = regex.findall(line)
ergebnisliste = ergebnisliste + erg
ergebnislistesortiert = sorted(ergebnisliste, key=lambda x: len(x))
print ergebnislistesortiert
fileobject.close()
我正在文本文件中搜索以 s 或 w 开头的单词。我的"ergebnislistesortiert"是排序后的结果列表。
我将打印结果列表,编码似乎有问题:
['so', 'Wer', 'sp\xc3']
'sp\xc3' 应打印为 spät。这里有什么问题?为什么列表元素是utf-8?
我怎样才能得到正确的解码来打印 "spät"?
非常感谢你们!
\xc3
不是 UTF-8。它是 U+00E4 的完整 UTF-8 编码的片段,但您可能正在使用 Latin-1 解码器之类的东西读取它(如果您读取字节而不指定编码),在这种情况下,UTF-8 序列中的第二个字节与 \w
.
不匹配
真正的解决方法是在您首先将数据读入 Python 时对其进行解码。如果您正在编写新代码,切换到 Python 3 可能是最好和最简单的修复方法。
如果你坚持使用 Python 2.7,有点 Python 3 兼容的方法是
import io
fileobject = io.open(filename, encoding='utf-8')
如果您可以控制输入文件并希望将正确的解决方案推迟到您年长时,(请求您的 parents 允许)将 UTF-8 输入文件转换为一些旧的 8 位编码。
我认为 python 只是另一个关于编码的问题。我有这个程序:
regex = re.compile(ur'\b[sw]\w+', flags= re.U | re.I)
ergebnisliste = []
for line in fileobject:
print str(line)
erg = regex.findall(line)
ergebnisliste = ergebnisliste + erg
ergebnislistesortiert = sorted(ergebnisliste, key=lambda x: len(x))
print ergebnislistesortiert
fileobject.close()
我正在文本文件中搜索以 s 或 w 开头的单词。我的"ergebnislistesortiert"是排序后的结果列表。 我将打印结果列表,编码似乎有问题:
['so', 'Wer', 'sp\xc3']
'sp\xc3' 应打印为 spät。这里有什么问题?为什么列表元素是utf-8?
我怎样才能得到正确的解码来打印 "spät"?
非常感谢你们!
\xc3
不是 UTF-8。它是 U+00E4 的完整 UTF-8 编码的片段,但您可能正在使用 Latin-1 解码器之类的东西读取它(如果您读取字节而不指定编码),在这种情况下,UTF-8 序列中的第二个字节与 \w
.
真正的解决方法是在您首先将数据读入 Python 时对其进行解码。如果您正在编写新代码,切换到 Python 3 可能是最好和最简单的修复方法。
如果你坚持使用 Python 2.7,有点 Python 3 兼容的方法是
import io
fileobject = io.open(filename, encoding='utf-8')
如果您可以控制输入文件并希望将正确的解决方案推迟到您年长时,(请求您的 parents 允许)将 UTF-8 输入文件转换为一些旧的 8 位编码。