我正在尝试迭代表中的行列表并修改其中一列中的字符串:
# python 2.7
import csv
import re
with open('root_diff.txt', 'rU') as dmr:
coordinates_tsv = csv.reader(dmr, delimiter='\t')
coordinates_list = [row for row in coordinates_tsv]
for row in coordinates_list:
cut = re.split(':|-|r', row[3])
print cut[1]
但是我收到以下错误:
IndexError: list index out of range
row[3]
中的字符串如下所示:chr1:594572-598657
。
我想拆分它,看起来像这样:['ch', '1', '594572', '598657']
,用第二和第三个数字做点什么。
答案 0 :(得分:2)
row[3]
必须至少包含一个值,且不包含要拆分的任何字符。
要进行调试,请抓住IndexError
并打印cut
和/或row[3]
以查看发生了什么:
try:
print cut[1]
except IndexError:
print '-- unexpected input --', row[3]
如果这是标题,请使用next()
:
with open('root_diff.txt', 'rU') as dmr:
coordinates_tsv = csv.reader(dmr, delimiter='\t')
next(coordinates_tsv, None) # skip first row, the header
for row in coordinates_tsv:
请注意,理论上,它仍然可能是之前的行抛出此异常;你没有在帖子中分享回溯。如果空白行或列数较少的行会导致IndexError
为row[3]
。例如,空行给出一个空列表。