2017-08-14 27 views
0

我有一个file.txt的与输入Python的读取和写入“SS”从并祝

Straße 
Straße 1 
Straße 2 

我想从文件中读取这段文字并进行打印。我试过了,但它不会奏效。

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 
+1

你试过没有'.decode('utf8')'吗?是的,你不能解码字符串,只编码他们 – dhdavvie

+0

https://stackoverflow.com/questions/44309044/unicodedecodeerror-utf-8-invalid-continuation-byte – chrki

+0

没有'.decode('utf8')'我得到类似'Stra▀e'的输出 – Dking1199

回答

1

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

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

运行完美, 谢谢! – Dking1199

+0

没问题。请将此标记为选定的答案;) – Evan

-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版本吗?

+0

我也使用python 2.7。你可以张贴Python脚本,也许我只是在它的错误。 – Dking1199

+0

'进口随机 lmao1 =打开( 'file.txt的')。阅读()。splitlines() LMAO = random.choice(lmao1) 打印STR(LMAO).decode( 'utf-8')' –

0

你在正确的轨道上,关于decode,问题只存在no way猜测的文件100%的编码。尝试不同的编码(例如latin-1)。

0

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

无论编码如何,请使用io.open并指定编码。此代码可在Python 2和Python 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)