指发生在回复sub

2024-05-04 04:59:27 发布

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

我习惯用re.sub()来替换字符串中的字母,但是仅仅插入一些东西怎么样?你知道吗

import re
re.sub('Item', '- <thing>', 'A list of things: \nItem 1 \nItem 2')

你应该回来

"A list of things: \n- Item 1 \n- Item 2"

它并没有真正替代,而是插入了一些东西。这在正则表达式中真的可能吗?还是我应该坚持在整个文本中循环使用.replace()?我需要替换特定事物的模式,因此使用大量.replace()似乎有点不雅观。你知道吗


Tags: of字符串文本importre字母模式item
3条回答

为什么不做第二个参数- Item?你知道吗

>>> re.sub('Item', '- Item', 'A list of things: \nItem 1 \nItem 2')
'A list of things: \n- Item 1 \n- Item 2'

这里有一个奇特的方法,对于有幻想倾向的人来说:

import re
re.sub('(?=Item)', '- ', 'A list of things: \nItem 1 \nItem 2')
#>>> 'A list of things: \n- Item 1 \n- Item 2'

它搜索(?=Item),这是一个空字符串,后跟Item,并用-替换它。你知道吗

请注意,在现实生活中,这应该拼写为:

'A list of things: \nItem 1 \nItem 2'.replace('Item', '- Item')

尽管我认为这只是因为这太简单了。你知道吗

你在找“反向参考”。它们通常拼写为\X,其中“X”是指您要引用的捕获组的编号(不过,如果您想更进一步,也可以使用命名的捕获组)。你知道吗

下面是如何使代码正常工作的方法:

re.sub(r'(Item)', r'- \1', 'A list of things: \nItem1, \nItem2')

相关问题 更多 >