Python 2.7 считывает закодированный текстовый файл как код, а не как текст. (Исправлено с помощью модуля io) - PullRequest
0 голосов
/ 28 июня 2018

У меня есть текстовый файл (* .txt), который отображается в виде обычного текста при открытии в блокноте. Когда я пытаюсь прочитать файл в Python:

with open(Working_File,'r') as WorkTXT:
    WorkTXT_Lines = WorkTXT.readlines()
    WorkTXT.close()

Мой сценарий завершается ошибкой, потому что текст преобразуется во что-то другое. Я могу вручную проверить, что в списке, используя консоль:

In[51]: WorkTXT_Lines[4]
Out[51]: "\x00T\x00h\x00e\x00 \x00A\x00c\x00q\x00.\x00 \x00M\x00e\x00t\x00h\x00o\x00d\x00'\x00s\x00 \x00I\x00n\x00s\x00t\x00r\x00u\x00m\x00e\x00n\x00t\x00 \x00P\x00a\x00r\x00a\x00m\x00e\x00t\x00e\x00r\x00s\x00 \x00f\x00o\x00r\x00 \x00t\x00h\x00e\x00 \x00R\x00u\x00n\x00 \x00w\x00e\x00r\x00e\x00 \x00:\x00 \x00\r\x00\n"

Если я открываю исходный текстовый файл и копирую текст в новый текстовый файл, то запускаю его, похоже, подбирает фактический текст, и скрипт работает правильно. Это не помогает, хотя я анализирую сотни текстовых файлов, сгенерированных из лабораторного инструмента.

Любая помощь приветствуется, даже что-то вроде команды ОС для изменения текстового файла.

Редактировать - смог решить проблему после того, как вел в правильном направлении. Модуль io способен декодировать текстовый файл и «читать как текст (rt)»

import io
with io.open(Working_File,'rt') as WorkTXT:
    WorkTXT_Lines = WorkTXT.readlines()
    WorkTXT.close()

1 Ответ

0 голосов
/ 28 июня 2018

Содержимое страницы закодировано, я погуглил ваш вывод и сказал, что это utf-16 если вы расшифровываете файл после прочтения, все становится простым текстом

import io

with io.open(Working_File,'r', encoding='utf-16-le' ) as WorkTXT:
    #here you read the whole file -> decode it -> and split it to lines 
    #now you are working with a plain text :) 
    WorkTXT_Lines = WorkTXT.readlines() 
    for line in WorkTXT_Lines:
        print(line)
...