0

试图让自己成为一个解析多行文本文件的脚本。对于我的一生,我无法弄清楚为什么它一直给我IndexOutofRange,但是如果我打印列表的内容,它会正确显示,当我删除或注释掉打印时,或者在将项目附加到之后尝试做任何进一步的处理列表,我得到同样的错误。

源文本文件有一堆行,每条数据用逗号分隔,如下所示:abc,123456,abcd,efgh我试图从字符串中删除除编号部分之外的所有内容,然后将该“子字符串”添加到列表中,然后将其写入输出文件。我确定我写它的方式可能不是很有效,所以请在你认为合适的时候更正。

import sys

fname = sys.argv[1]
list = []
output = "output.txt"
with open(fname) as f:
    content = f.readlines()
    for line in content:
        line = line.split(',')
        list.append(line[1])

with open(output, w) as w:
    w.write(list)

索引超出范围命中该list.append(line[1])部分。

4

2 回答 2

2

您的文件很可能在开头或结尾包含一个空行,不包含逗号或任何其他类型的文本。

尝试检测空行并跳过它们。

import sys

fname = sys.argv[1]
list = []
output = "output.txt"
with open(fname) as f:
    content = f.readlines()
    for line in content:
        if line:
            line = line.split(',')
            list.append(line[1])

with open(output, w) as w:
    w.write(list)
于 2015-08-10T12:23:01.483 回答
1

您可以使用上面的代码找到有问题的行,它会为您打印有问题的行。

import sys

fname = sys.argv[1]
list = []
output = "output.txt"
with open(fname) as f:
    content = f.readlines()
    for line in content:
        if line:
            line = line.split(',')
            try:
                list.append(line[1])
            except Exception, ex:
                print "problem with line", line

with open(output, w) as w:
    w.write(list)
于 2015-08-10T12:25:34.607 回答