Python从fille读取和写入'ß'

时间:2017-08-14 13:01:34

标签: python unicode

我有一个带输入

的file.txt
lmao1 = open('file.txt').read().splitlines()
lmao =random.choice(lmao1)
print str(lmao).decode('utf8')

我想从文件中读取此文本并打印出来。我尝试过这个,但它不起作用。

UnicodeDecodeError: 'utf8' codec can't decode byte 0xdf in position 5: invalid continuation byte

但我得到了错误

qwer = qwer[["date", "price", "type","amount", "tid"]]

4 个答案:

答案 0 :(得分:1)

知道了。如果这不起作用,请尝试其他常见编码,直到找到正确的编码。 utf-8不是正确的编码。

print str(lmao).decode('latin-1')

答案 1 :(得分:0)

关于decode,您走在正确的轨道上,问题是只有no way来猜测文件的编码100%。尝试使用其他编码(例如latin-1)。

答案 2 :(得分:0)

如果在Windows上,该文件可能以cp1252编码。

无论编码是什么,请使用io.open并指定编码。此代码适用于Python 2和3。

io.open将返回Unicode字符串。最好立即在程序的I / O边界转换为Unicode。在这种情况下,这意味着首先将文件作为Unicode读取,并留下print以确定终端的适当编码。

还建议切换到Python 3,在那里大大改进了Unicode处理。

from __future__ import print_function
import io
import random
with io.open('file.txt',encoding='cp1252') as f:
    lines = f.read().splitlines()
line = random.choice(lines)
print(line)

答案 3 :(得分:-1)

它在Python提示符和从python脚本运行时工作正常。

>>> import random
>>> lmao =random.choice(lmao1)
>>> lmao =random.choice(lmao1)
>>> print str(lmao).decode('utf8')
Straße 2

上面的内容适用于Python 2.7。我可以知道你的python版本吗?