我从一个文本块中创建了一个列表列表,其中每个列表包含一行中的所有单词作为单独的元素,如下所示:
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
我还有其他方法吗?
答案 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
的操作,则可以使用。