Преобразование текстовых файлов DOS в Unicode с использованием Python

Я пытаюсь написать приложение на Python для преобразования старых текстовых файлов кодовой страницы DOS в их Unicode-эквивалент. Теперь я сделал это перед использованием Turbo Pascal, создав таблицу поиска, и я уверен, что то же самое можно сделать с помощью словаря Python. Мой вопрос: как мне индексировать в словарь, чтобы найти символ, который я хочу преобразовать, и отправить эквивалентный Unicode в выходной файл Unicode?

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

2 ответа

У Python есть кодеки для преобразования:

#!python3

# Test file with bytes 0-255.
with open('dos.txt','wb') as f:
    f.write(bytes(range(256)))

# Read the file and decode using code page 437 (DOS OEM-US).
# Write the file as UTF-8 encoding ("Unicode" is not an encoding)
# UTF-8, UTF-16, UTF-32 are encodings that support all Unicode codepoints.

with open('dos.txt',encoding='cp437') as infile:
    with open('unicode.txt','w',encoding='utf8') as outfile:
        outfile.write(infile.read())

Вы можете использовать стандартную сборку decode метод bytes объекты:

with open('dos.txt', 'r', encoding='cp437') as infile, \
        open('unicode.txt', 'w', encoding='utf8') as outfile:
    for line in infile:
        outfile.write(line)
Другие вопросы по тегам