IndexError字符串索引在引用第一个字符时超出范围

时间:2012-06-12 20:03:30

标签: python sqlite csv

这是我的代码(目前):

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。为什么这不起作用?在尝试引用第一个字符之前,我已将其转换为字符串,因此我不明白为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

好像你得到一个空字符串。尝试使用以下内容替换if语句,看看它是否有效。

if str(Number).startswith('1'):

(编辑反映@kindall建议使用startswith而非切片[:1])。