在python中为for循环拆分字符串

时间:2013-10-23 10:24:41

标签: python split

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

# 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'],用第二和第三个数字做点什么。

1 个答案:

答案 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:

请注意,理论上,它仍然可能是之前的行抛出此异常;你没有在帖子中分享回溯。如果空白行或列数较少的行会导致IndexErrorrow[3]。例如,空行给出一个空列表。