2017-08-14 29 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)