python неправильно читает текстовый файл
Я пытаюсь прочитать в текстовом файле, который выглядит примерно так:
Date, StartTime, EndTime
6/8/14, 1832, 1903
6/8/14, 1912, 1918
6/9/14, 1703, 1708
6/9/14, 1713, 1750
и вот что у меня есть:
g = open('Observed_closure_info.txt', 'r')
closure_date=[]
closure_starttime=[]
closure_endtime=[]
file_data1 = g.readlines()
for line in file_data1[1:]:
data1=line.split(', ')
closure_date.append(str(data1[0]))
closure_starttime.append(str(data1[1]))
closure_endtime.append(str(data1[2]))
Я сделал это таким образом для предыдущего файла, который был очень похож на этот, и все работало нормально. Однако этот файл не читается должным образом. Сначала это дает мне ошибку "индекс списка вне диапазона" для closure_starttime.append(str(data1[1]))
и когда я прошу его распечатать то, что у него есть для data1 или closure_date, это дает мне что-то вроде
['x006x00/x008x00/x001x004x00,x00 x001x008x003x002x00,x00 x001x009x000x003x00rx00n']
Я попытался переписать текстовый файл на случай, если что-то повреждено в этом конкретном файле, и он по-прежнему делает то же самое. Я не уверен, почему, потому что в прошлый раз это работало нормально.
какие предложения? Спасибо!
2 ответов
это выглядит как разделенный запятыми файл с кодировкой UTF-16 (отсюда \x00
нулевые байты). Вам нужно будет декодировать вход из UTF-16, например:
import codecs
closure_date=[]
closure_starttime=[]
closure_endtime=[]
with codecs.open('Observed_closure_info.txt', 'r', 'utf-16-le') as g:
g.next() # skip header line
for line in g:
date, start, end = line.strip().split(', ')
closure_date.append(date)
closure_starttime.append(start)
closure_endtime.append(end)
попробуй такое
g = open('Observed_closure_info.txt', 'r')
closure_date=[]
closure_starttime=[]
closure_endtime=[]
file_data1 = g.readlines()
for line in file_data1[1:]:
data1=line.decode('utf-16').split(',')
closure_date.append(str(data1[0]))
closure_starttime.append(str(data1[1]))
closure_endtime.append(str(data1[2]))