2016-01-21 45 views
0

我想讀在它韓文和英文TXT文件。
下面是一個例如:
52:15問候。 안녕하십니까。閱讀TXT文件成Python 3.5,韓文和英文字符在它

我的代碼是:

# Read a line and Split into tokens                 
f = open(infile, 'r') 
for line in f: 
    if(matchObj = re.match(r"(\d\d:\d\d)\t([^\t]+)\t(.*)$", line) 
     startTC, englishSubtitle, foreignSubtitle = matchObj.group(1), matchObj.group(2), matchObj.group(3) 
    else: 
     SyntaxError(line) 

當我在2012年的MacBook Pro運行埃爾卡皮坦讀入蟒(3.5),我得到錯誤信息(在底部)。

錯誤消息:

python3 *.py 
Traceback (most recent call last): 
File "txtToSrt.py", line 48, in <module> 
readFileData("Korean.txt") 
File "txtToSrt.py", line 26, in readFileData 
for line in f: 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py", line 321, in decode 
(result, consumed) = self._buffer_decode(data, self.errors, final) 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 0: invalid start byte 

可否請你建議如何在閱讀本

+0

'0xfe' - 它可以是[BOM(https://en.wikipedia.org/wiki/Byte_order_mark) – furas

回答

1

似乎不幸的Python與韓元符號的一個問題。 請嘗試以下方法確認本作的Python 3.5:

a_string = 'à'.encode ('utf-8') 
print (a_string) 

b_string = '₩'.encode ('utf-8') 
print (b_string) 

a_bytes = a_string.decode ('utf-8') 
print (a_bytes) 

b_bytes = b_string.decode ('utf-8') 
print (b_bytes) 
+0

謝謝你,雅克。 – Rajnesh

0

我加在頂部以下行:

import codecs 

,並改了行讀取文件如下:

f = open(infile, 'r', encoding="utf-16") 

讀取數據的工作了,但寫入文件沒有。編寫的代碼是:

outfile = open("out.txt", 'w') 
outfile.write("{0}\n{1}\n".format(startTC, foreignSubtitle.encode("utf-16"))) 

我得到的輸出是:

01:00:01:16 
b'\xff\xfe\x14\xbc\x98\xb0\x90\xc7' 

我想輸出出現在韓國的第二行。我怎樣才能做到這一點? 謝謝。