我有一个带输入
的file.txtlmao1 = 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"]]
答案 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版本吗?