0

これが私のコードです(現在):

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 を削除したいと考えています。なぜこれがうまくいかないのですか?最初の文字を参照しようとする前に文字列に変換したので、これが機能しない理由がわかりません。

4

1 に答える 1

1

空の文字列を取得しているようです。if ステートメントを次のように置き換えてみて、機能するかどうかを確認してください。

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

startswith( slicing の代わりに使用するという @kindall の提案を反映するように編集されました[:1])。

于 2012-06-12T20:08:14.027 に答える