我嘗試使用來自用戶的輸入,以拉該日期範圍內的數據代碼。我的日期是23列(是的,我知道該指數從0開始),並在Excel的格式,像這樣:1/1/2007獲取錯誤使用用戶輸入時用Python
下面是代碼:
import datetime
if __name__ == '__main__':
from_raw = raw_input('\nEnter FROM Date (e.g. 2013-11-29) : ')
from_date = datetime.date(*map(int, from_raw.split('-')))
print 'From date: = ' + str(from_date)
to_raw = raw_input('\nEnter TO Date (e.g. 2013-11-30) : ')
to_date = datetime.date(*map(int, to_raw.split('-')))
in_file = './MyFileTest.csv'
for line in in_file:
fields = line.split(',')
found_date = datetime.date(*map(int, fields[23].split(' ')[23].split('-')))
if from_date <= found_date <= to_date:
print line
in_file.close()
不過,我得到一個IndexError:列表索引超出我的代碼範圍。如果我將23更改爲0,則我會在基數爲10時得到錯誤值ValueError:int()的無效字面值:'。'
有誰知道是怎麼回事,如何解決?
第23欄(在Excel列索引X)是這樣的:
receiveddate
1/1/2007
1/1/2007
1/1/2007
1/2/2007
1/2/2007
1/2/2007
1/2/2007
1/2/2007
1/2/2007
1/2/2007
12/28/2006
12/29/2006
12/29/2006
1/2/2007
我偶然一些分裂的命令拆分(「/」),看看是否會幫助,但因爲它聲稱那列表索引超出範圍,代碼的這方面並不重要。
導致錯誤的行是什麼? '田地'裏有什麼? (這是假設它是行計算'found_date'是導致錯誤的那個;你不真的說。) –
@ScottHunter對不起,你是對的,導致錯誤的行是found_date。我認爲領域是從上面的行使用line.split(','),不是? – jenryb
是的,這就是'字段'如何計算的,但是*值*會在那裏發生什麼?知道這將有助於確定要做什麼*(請記住,您沒有顯示任何關於您的csv文件的內容)。 –