取出列表中某些项目的最后一个字母

Taking out the last letter of some items in a list

我有如下列表:

['Singh Sumer',
 'Li Sheng\n',
 'Hahn Vanessa',
 'Ruiter Dana',
 'Kleinbauer Thomas',
 'Klakow Dietrich\n',
 'Caselli Tommaso']

部分会员以'\n'结尾。我想删除它们并将它们作为列表的以下成员。

所以,我想将其作为输出:

['Singh Sumer',
 'Li Sheng',
 '\n',
 'Hahn Vanessa'
 'Ruiter Dana',
 'Kleinbauer Thomas',
 'Klakow Dietrich',
 '\n',
 'Caselli Tommaso']

我试图获取末尾有'/n'的成员的索引,并将'/n'插入到这些索引中。但是当我使用 insert 函数时,它用 list 的其他成员替换了它们。有什么建议吗?

re.split 具有前瞻性 returns 包含单词和换行符(如果存在)的列表,或者仅包含单词

import re

lst = [
 'Singh Sumer',
 'Li Sheng\n',
 'Hahn Vanessa',
 'Ruiter Dana',
 'Kleinbauer Thomas',
 'Klakow Dietrich\n',
 'Caselli Tommaso'
]
r = []
for s in lst:
    r.extend(re.split(r'(?=\n)', s))
print(r)

这很容易,但你必须记住“\n”被视为单个字符,所以你必须将其视为只有 1 个字母。

您可以这样做:

elements = ['Singh Sumer',
 'Li Sheng\n',
 'Hahn Vanessa',
 'Ruiter Dana',
 'Kleinbauer Thomas',
 'Klakow Dietrich\n',
 'Caselli Tommaso']

output = []

for index, element in enumerate(elements):
    output.append(element.strip())
    if element[-1:] == "\n":
        output.insert(index+1, "\n")

print (output)

输出为:

['Singh Sumer', 'Li Sheng', '\n', 'Hahn Vanessa', 'Ruiter Dana', 'Kleinbauer Thomas', '\n', 'Klakow Dietrich', 'Caselli Tommaso']