2017-06-12 44 views
0

我有一個由149個文本字符串組成的列表。從每個字符串中,我想提取第2和第7行文本。我希望每行的結果都放在一個單獨的列表中。從列表中的字符串中提取第n行文本 - Python

我試過(只是一條線):

text = [] 
for string in list: 
    x = string.splitlines()[2] 
    text.append(x) 

但我得到的消息「IndexError:列表索引超出範圍」。我想,也許我需要做的:

text = [] 
for string in list: 
    x = [string].splitlines()[2] 
    text.append(x) 

但是,這給我的消息「AttributeError的:‘名單’對象有沒有屬性‘splitlines’」

我使用Python 3.6。有任何想法嗎?謝謝你的幫助!

+2

你絕對不需要把它放在括號內,這使它成爲一個列表。 'string.splitlines'是正確的,你顯然沒有在那個特定條目中的3行。 (不知道你的數據是什麼樣的,我不能說更多) –

+0

如果在第一次嘗試分配x之前執行'print(len(string.splitlines())),打印什麼? –

+0

另外,爲了提取第二行,你應該使用'string.splitlines()[1]' - 因爲0是第一個元素,1是第二個元素,依此類推。 –

回答

2

string.splitlines是分割每個字符串的行的正確函數,並且如果它爲索引2(注意:這是第3行)給出IndexError,那麼這意味着少於三行。這可能是你正在尋找的代碼:

line2_results = [] 
line7_results = [] 
for str in list: 
    lines = str.splitlines() 
    if len(lines) >= 2: 
     line2_results.append(lines[1]) 
     if len(lines) >= 7: 
      line7_results.append(lines[6]) 
+0

謝謝你的幫助!是的,輸入列表中有空白字符串,我現在看到這是導致錯誤。 – user3910919