Python 列表:索引错误:列表索引超出范围
当我尝试打印 splited_data[1]
时,出现了错误信息 IndexError: list index out of range
,而 splited_data[0]
则正常工作。我想把数据插入到 MySQL 数据库中,splited_data[0]
是我的 MySQL 列名,而 splited_data[1]
是对应的列值。我希望如果 splited_data[1]
是空的,就在 MySQL 中插入一个空字符串。但我遇到了 IndexError: list index out of range
的错误。该如何避免这个错误呢?请帮帮我,谢谢。
这是我的代码,运行得很好。只有在 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']
3 个回答
0
一个 list
是连续的。这意味着在你尝试访问它之前,必须确保它的长度大于你要访问的索引。
'' if len(splited_data) < 2 else splited_data[1]
你也可以在分割之前先检查一下:
if '=' in item:
col, val=item.split('=',1)
else:
col, val=item, ''
0
试着把等号两边的空格去掉,像这样:
splited_data = item.split('=',1)
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 ('').