编辑列表列表中的字符串

时间:2014-07-07 11:33:23

标签: python list

我从一个文本块中创建了一个列表列表,其中每个列表包含一行中的所有单词作为单独的元素,如下所示:

listoflists = [['Lorem', 'ipsum', 'dolor', 'sit', 'amet\n']
               ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis\n']]

我希望能够浏览列表列表,并从列表列表中每个列表的最后一个元素中删除'\ n'。

这是我写的尝试这样做的脚本,但它不起作用,因为当我返回n时,它只返回第一个列表的第一个元素。

def remove_linebreaks(input):
for i in data:
    for n in i:
        if '\n' in n:
            n.strip('\n')
            return n
        else:
            return n
return input

我还有其他方法吗?

5 个答案:

答案 0 :(得分:1)

为什么不做return n.strip('\n')?你可以摆脱if / else

答案 1 :(得分:1)

您可以使用列表理解

listoflists = [['Lorem', 'ipsum', 'dolor', 'sit', 'amet\n'],
               ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis\n']]

[[j.replace("\n","") for j in i] for i in listoflists]

输出

[['Lorem', 'ipsum', 'dolor', 'sit', 'amet'],
 ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis']]

答案 2 :(得分:0)

重复遍历每个列表,并将最后一个元素替换为剥离'\n'的最后一个元素。

>>> listoflists = [['Lorem', 'ipsum', 'dolor', 'sit', 'amet\n'],
               ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis\n']]
>>> for elem in listoflists:
        elem[-1] = elem[-1].strip('\n')


>>> listoflists
[['Lorem', 'ipsum', 'dolor', 'sit', 'amet'], ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis']]

编辑 - 因为在代码中,您似乎从您可以执行的每个元素中剥离\n

>>> [[elem.strip('\n') for elem in lst] for lst in listoflists]
[['Lorem', 'ipsum', 'dolor', 'sit', 'amet'], ['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis']]

答案 3 :(得分:0)

listoflists = [['Lorem', 'ipsum', 'dolor', 'sit', 'amet\n'],['consectetur', 'adipiscing', 'elit', 'donec', 'iaculis\n']]
for l in listoflists:
    l[-1] = l[-1].replace('\n','')
print listoflists

“”” 输出:

[['Lorem','ipsum','dolor','sit','amet'],  ['consectetur','adipiscing','elit','donec','iaculis']]

“”“

答案 4 :(得分:0)

此外,原始代码无效的原因是b / c n.strip('\n')不会更改n的值。它返回一个新字符串。如果您执行类似n=n.strip('\n'); return n的操作,则可以使用。