2011-10-24 19 views
0

印刷しようとするとsplited_data[1]エラーメッセージIndexError: list index out of rangeが表示されますが、splited_data[0]は正常に動作しています。 MySQLにデータを挿入したい。 splited_data[0]は私のMySQLの列で、splited_data[1]はmysqlの列の値です。 splited_data[1]が空の場合は空文字列をmysqlに挿入します。しかし、私はIndexError: list index out of rangeを得ています。このエラーを回避する方法は?私を助けてください。ありがとうございますPython一覧:IndexError:リストのインデックスが範囲外です

ここに私のコードです。どちらがうまくいきますか。 splited_data[1]が空の場合にのみ、このエラーメッセージが表示されます。ここ

def clean(data): 
     data = data.replace('[[','') 
     data = data.replace(']]','') 
     data = data.replace(']','') 
     data = data.replace('[','') 
     data = data.replace('|','') 
     data = data.replace("''",'') 
     data = data.replace("<br/>",',') 
     return data 


for t in xml.findall('//{http://www.mediawiki.org/xml/export-0.5/}text'): 
    m = re.search(r'(?ms).*?{{(Infobox film.*?)}}', t.text) 
    if m: 
     k = m.group(1) 
     k.encode('utf-8') 
     clean_data = clean(k) #Clean function is used to replace garbase data from text 
     filter_data = clean_data.splitlines(True) # splited data with lines 
     filter_data.pop(0) 
     for index,item in enumerate(filter_data): 
       splited_data = item.split(' = ',1) 
       print splited_data[0],splited_data[1] 

# splited_data[0] used as mysql column 
# splited_data[1] used as mysql values 

Splited_dataデータ

[u' music   ', u'Jatin Sharma\n'] 
[u' cinematography', u'\n'] 
[u' released  ', u'Film datedf=y201124'] 

答えて

1
split_data = item.partition('=') 
# If there was an '=', then it is now in split_data[1], 
# and the pieces you want are split_data[0] and split_data[2]. 
# Otherwise, split_data[0] is the whole string, and 
# split_data[1] and split_data[2] are empty strings (''). 
+0

どうもありがとう。 :-) –

0

は対等の両側の空白を削除してください。このように、署名:

splited_data = item.split('=',1) 
0

listが連続しています。そのため、アクセスしようとする前に、インデックスの長さがインデックスよりも大きいかどうかを確認する必要があります。

'' if len(splited_data) < 2 else splited_data[1] 

あなたが分割する前に、あなたはもチェックできます。

if '=' in item: 
    col, val=item.split('=',1) 
else: 
    col, val=item, '' 
+0

おかげでどのような方法:-)。 'item.partition'で簡単にできます –

関連する問題