0

我正在尝试遍历表中的行列表并修改其中一列中的字符串:

# 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'],并对第二个和第三个数字做一些事情。

4

1 回答 1

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:

请注意,理论上,它也可能仍然是引发此异常的前一行;您没有在帖子中分享回溯。空行或列较少的行将导致IndexErrorfor row[3]。例如,空行给出一个空列表。

于 2013-10-23T10:32:40.293 回答