2016-02-27 181 views
-1

我想获得一个小python脚本工作,它将解析我有一个文件,并只返回我想要的行。下面的代码返回给我一个错误“IndexError:字符串索引超出范围”。字符串长度超过2个字符,但字符串[1]返回错误?

source = open("source.txt", "r") 
new = open("new.txt", "a") 
newLine = "" 
for line in source: 
    newLine = line 
    if newLine[1] == "W": 
     print newLine 
     new.write(newLine) 

这混淆了我,因为我敢肯定,有在这些字符串超过2个字符。但是如果我更换:

if newLine[1] == "W": 

有:

if newLine[0] == "[": 

代码开始工作?

唯一的问题是,我需要按第二个字符排序,因为除了我想要的之外,第一个字符还会返回大量不需要的行。

+0

你可以在你的文件中记录这行并粘贴在这里。 – starkshang

+5

如果Python认为该行只有一个字符,并且您认为它有两个字符,我知道我在下注哪种方式。 :-)立即在你的'for line for source:'loop中添加'print len(line),repr(line)'并找到不正确的行。 – DSM

+1

我敢打赌,你有空行,并没有考虑到它们。 – user2357112

回答

1

你的

I'm sure that there are more then 2 characters in each of these strings

语句与Python异常确切矛盾的范围超出界限的。在这种情况下,我很可能会在这里信任电脑。上述测试不起作用,因为if newLine[0] == "[":正在检查第0个位置,而您的原始代码正在检查第1个位置。

我的猜测(不知道没有看到你的输入文件),是你有一个换行\n某处在你的文件(也许是最后一行),这是打破你的脚本。

+0

如果'\ n'在最后一行,你怎么知道它是通过看到它? –

相关问题