编辑列表中的字符串

2024-10-20 08:12:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我还有别的办法吗?你知道吗


Tags: in文本元素列表forinputreturn单词
3条回答

你为什么不直接做return n.strip('\n')?你可以去掉if/else

只需遍历每个列表,并用'\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']]

你可以用一个列表

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']]

相关问题 更多 >