0
在這裏IndexError串索引超出範圍是我的代碼(目前):引用第一個字符
conn = sqlite3.connect(db)
conn.text_factory = str #bugger 8-bit bytestrings
cur = conn.cursor()
reader = csv.reader(open(csvfile, "rU"), delimiter = '\t')
for Number, Name, Message, Datetime, Type in reader:
# populate subscriber table
if str(Number)[0] == '1': # errors on this line
tmpNumber = str(Number)[1:]
Number = int(tmpNumber)
cur.execute('INSERT OR IGNORE INTO subscriber (name, phone_number) VALUES (?,?)', (Name, Number))
cur.close()
conn.close()
它發表了評論,表示該行返回該錯誤的錯誤在於:
IndexError: string index out of range
所有的數字都有值,但如果電話號碼以1開頭,我想在刪除1之前將其插入到數據庫中。爲什麼這不工作?在嘗試引用第一個字符之前,我將它轉換爲字符串,所以我不明白爲什麼這不起作用。
工作,謝謝!現在要弄清楚爲什麼沒有數據寫入數據庫.... – Dan
它不讓我把這個標記爲答案,我想我必須先等待7分鐘。任何想法爲什麼沒有從文件讀入數據庫?標準csv文件,製表符分隔.... – Dan
沒有被'csv'讀入或沒有被添加到數據庫?你有可能只有空行嗎?我會添加一個'else'子句,當你得到一個空字符串時打印出所有讀取的內容。所有你需要的是一個空的數字列來產生錯誤。此外,您不應該需要將Number轉換爲字符串,它應該是一個字符串,因此您需要先將其轉換爲int ... –