2016-02-27 163 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'在最後一行,你怎麼知道它是通過看到它? –

相關問題