重新拆分:查找spli的原因

2024-06-16 02:59:43 发布

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

在下面的示例中,字符串在关键字dolor sitelitr sedsomething else处被拆分。你知道吗

我有什么选择来找出哪个关键字导致了在给定位置的拆分(请参阅预期输出)?你知道吗

import re

example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splitted_string = re.split('dolor sit|elitr sed|something else', example_input)

for (index, part) in enumerate(splitted_string, 1):
    if index == len(splitted_string):
        print (part.strip())
    else:
        print (part.strip(), '-', '???')

输出:

Lorem ipsum - ???
amet consetetur sadipscing - ???
diam nonumy

预期产量:

Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy

Tags: stringelsesedpartipsumloremdoloramet
3条回答

您可以在捕获组中捕获拆分分隔符,方法是将regex放在括号中,如:

re.split(r'(dolor sit|elitr sed|something else)', example_input)

这将返回一个拆分术语列表,后跟分隔符,如:

['Lorem ipsum ', 'dolor sit', ' amet consetetur sadipscing ', 'elitr sed', ' diam nonumy']

有了它,您就可以遍历它并拉出分隔符。你知道吗

import re
from itertools import zip_longest

example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splits = re.split(r'(dolor sit|elitr sed|something else)', example_input)

for (part, delimiter)in zip_longest(splits[::2], splits[1::2]):
    print(part.strip(), '-', delimiter)

这将打印:

Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy - None

import re

example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splitted_string = re.split('dolor sit|elitr sed|something else', example_input)

for (index, part) in enumerate(splitted_string):
    next_index = index + 1 if index + 1 < len(splitted_string) else index

    next_part = example_input[example_input.find(part) +
                              len(part): example_input.find(splitted_string[next_index])]

    output = ' - ' + next_part if next_part else ''
    print(part.strip(), output)

这实际上是一个使用正则表达式的好地方,通过一个操作,您可以使用字符串并进行简单的替换:

import re

string = '''
Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy
Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy

'''

print(re.sub(r'(dolor sit|elitr sed|something else)\s+', r'- \1\n', string))

输出:


Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy
Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy

相关问题 更多 >