这是我的代码(目前):
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。为什么这不起作用?在尝试引用第一个字符之前,我已将其转换为字符串,因此我不明白为什么这不起作用。
答案 0 :(得分:1)
好像你得到一个空字符串。尝试使用以下内容替换if语句,看看它是否有效。
if str(Number).startswith('1'):
(编辑反映@kindall建议使用startswith
而非切片[:1]
)。