я итерация файлКак игнорировать недопустимые строки в файле?
for line in io.TextIOWrapper(readFile, encoding = 'utf8'):
, когда файл содержит следующую строку
b'"""\xea\x11"\t1664\t507\t137\t2\n'
, который генерирует следующее исключение
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xea in position 3: invalid continuation byte
Как я могу сделать мой сценарий игнорировать такие линии и продолжать с хорошими?
В качестве побочного примечания, почему вы используете 'io.TextIOWrapper (readFile, ...)' явно, а не просто 'open' /' io.open'-файл в текстовом режиме в первую очередь? Иногда есть веские причины для этого, но я видел, как люди делали это без уважительной причины ... – abarnert
@abarnert причина объясняется здесь http://stackoverflow.com/questions/20601796/how-to-open-an- unicode-text-file-inside-a-zip/20603185? noredirect = 1 # 20603185 –
ОК, круто. Между тем ... почему вы хотите пропустить такие строки? Кажется, что в произвольном файле есть встроенный мусор, шансы на то, что мусор красиво отделен по линиям, довольно тонкие, поэтому половина времени, когда вы собираетесь заканчивать тем, что пропускаете какой-то ненужный мусор, а также реальную линию текст. Кроме того, многие вещи действительны UTF-8, но полная глупость. Если вы знаете, что такое фактический формат, было бы намного лучше разобрать его правильно, чем использовать эту эвристику. – abarnert