繁体   English   中英

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

[英]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'。 我想删除它们并将它们作为列表的以下成员。

所以,我想把它作为 output:

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

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

re.split with lookahead 返回一个包含单词和换行符(如果存在)的列表,或者只是单词

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)

output 是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM