所以我有一个csv
文件,我正在用Python阅读,这是第一个属性的格式:'2011-01-01 00:00:00'
即它是一个字符串,它有日期和时间戳,分开空间。当我在此代码上致电split()
时,我会返回['2011-01-01', '00:00:00']
,其中非常清楚是size = 2
的列表。
这是我正在使用的代码:
for line in train_data:
datetime = line[0] # get first attribute of line
datetime_array = datetime.split(' ') # split on space
print datetime_array[0]
上面的代码工作正常,只打印出日期,格式为2011-01-01
。
但是,如果我想获取时间字符串,我将代码更改为:
for line in train_data:
datetime = line[0] # get first attribute of line
datetime_array = datetime.split(' ') # split on space
print datetime_array[1] # changed index from 0 to 1
我使用上面的代码抛出了IndexError: list index out of range
错误。
有趣的是,如果我这样做:
for line in train_data:
datetime = line[0]
datetime_array = datetime.split(' ')
size = len(datetime_array) # size = 2
print datetime_array[size - 1] # size - 1 = 1
输出是预期的,所以我得到00:00:00
有人能告诉我为什么会这样吗?为什么在明确指定索引时会出现错误?
答案 0 :(得分:1)
假设日期和小时之间有空格,您的代码就可以了。
问题是 - 某处没有。
要找出使用它的地点和原因:
line_number = 1
for line in train_data:
datetime = line[0] # get first attribute of line
datetime_array = datetime.split(' ') # split on space
if len(datetime_array) < 2:
print "The following line does not conform to expected format:"
print line
print "line number: %d" % line_number
line_number += 1
这将打印所有不符合您期望格式的行。
答案 1 :(得分:0)
我明白了。 我是个白痴。它抛出了IndexError: list index out of range
错误,因为我的csv文件的第一行包含属性名称,在本例中为datetime
。当然,这意味着列表只有['datetime']
,其中包含size = 1
。