2017-06-12 237 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

相关问题