2017-01-06 8 views
1

Я пытаюсь открыть и прочитать файл .txt который содержит большое количество текста. Ниже мой код, я не знаю, как решить эту проблему. Любая помощь будет очень оценена.codecs.ascii_decode (input, self.errors) [0] UnicodeDecodeError: кодек ascii не может декодировать байт 0xc2 в позиции 318: порядковый не в диапазоне (128)

file = input("Please enter a .txt file: ") 
myfile = open(file) 
x = myfile.readlines() 
print (x) 

, когда я вхожу в файл .txt это отображается сообщение об ошибке полной ниже:

line 10, in <module> x = myfile.readlines() 
line 26, in decode return codecs.ascii_decode(input, self.errors)[0] 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 318: ordinal not in range(128) 
+0

См., Пожалуйста: http://stackoverflow.com/questions/491921/unicode-utf-8-reading-and-writing-to-files-in-python –

+0

@AndriiAbramov в этом вопросе было очевидно, что файл был кодирован UTF-8. Я не уверен, что это так, и если это не приведет к большому разочарованию. –

ответ

-1

@AndriiAbramamov правильно, ваш Шоуда проверить этот вопрос, вот как вы можете открыть файл, который также находится на этой ссылке

import codecs 
f = codecs.open('words.txt', 'r', 'UTF-8') 
for line in f: 
    print(line) 

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

2

Вместо использования кодеков, я решаю это так:

def test(): 
    path = './test.log' 
    file = open(path, 'r+', encoding='utf-8') 
    while True: 
     lines = file.readlines() 
     if not lines: 
      break 
     for line in lines: 
      print(line) 

Вы должны дать кодирования параметров точно.