拆分具有已定义和未定义字符的字符串

2024-05-29 05:43:11 发布

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

我有一个文本文件,看起来像

text='\n> lefortoff\n> donna_marta\n> agizatullina\n> shshifter\n< bagira\n< recoder'

我想把它按\n分割,但也要跳过><以及它们后面的空格

我是通过这个代码来做的

names = text.split('\n> ')
last_names = names[-1].split('\n< ')
names = names[1:-1]
names.extend(last_names)

但是,想知道是否有更简单的方法来使用伪代码,如:

text.split('\n%s1%s2', %s1 = undefined, %s2 = undefined)

所以那些s1可以是><,s2可以是空间


Tags: 代码textnamessplitlast文本文件s2undefined
2条回答

@SeaBean的回答是最一般的,也是我的第一选择。但是,如果实际上只有两个表达式可以拆分,则可以使用带有str.split()的嵌套循环,如下所示:

text='\n> lefortoff\n> donna_marta\n> agizatullina\n> shshifter\n< bagira\n< recoder'
last_names = [
    n
    for part in text.split('\n> ')
    for n in part.split('\n< ')
]
print(last_names)
# ['', 'lefortoff', 'donna_marta', 'agizatullina', 'shshifter', 'bagira', 'recoder']

这使用了这样一个事实,即如果在其中一个分隔符上拆分,结果部分有时将是名称列表,而另一个分隔符位于它们之间。因此,我们首先在一个分隔符上拆分,然后在另一个分隔符上拆分每个部分(如果需要)

这将创建一个嵌套的列表结构,但如果我们只报告在内部循环中得到的所有内容,它将生成一个平面列表

您可以尝试使用regex:\n[<>]\s,如下所示:

[<>]就像你的s1,而\s就是你的s2

说明

\n匹配\n

[<>]字符类以匹配<>

\s也匹配尾随空格,以便提取的字符串没有额外的空格

import re
re.split(r'\n[<>]\s', text)


#output

['',
 'lefortoff',
 'donna_marta',
 'agizatullina',
 'shshifter',
 'bagira',
 'recoder']

相关问题 更多 >

    热门问题