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) 

Когда я прочитал это в Python (3.5) на 2012 Macbook Pro работает El Capitan, я получаю сообщение об ошибке (в нижней части).

Сообщение об ошибке:.

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 есть проблема с символом Корейского вона. Попробуйте сделать следующее, чтобы подтвердить это для питона 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' 

Я хотел бы вторую строку вывода, чтобы появиться на корейском языке. Как я могу это сделать? Спасибо.