Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 参考re.sub.中的事件_Python_Regex - Fatal编程技术网

Python 参考re.sub.中的事件

Python 参考re.sub.中的事件,python,regex,Python,Regex,我习惯于使用re.sub()替换字符串中的字母,但是只插入一些东西怎么样 import re re.sub('Item', '- <thing>', 'A list of things: \nItem 1 \nItem 2') 它并没有真正替代,而是插入了一些东西。这在正则表达式中真的是可能的吗?还是我应该继续循环整个文本并使用.replace()?我需要替换特定事物的模式,因此使用大量的。replace()似乎有点不雅观。为什么不直接使用第二个参数-Item >>&g

我习惯于使用
re.sub()
替换字符串中的字母,但是只插入一些东西怎么样

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

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

为什么不直接使用第二个参数
-Item

>>> re.sub('Item', '- Item', 'A list of things: \nItem 1 \nItem 2')
'A list of things: \n- Item 1 \n- Item 2'
你在寻找“反向参考”。它们通常拼写为
\X
,其中“X”是指您要返回的捕获组的编号(不过,如果您想更喜欢,也可以使用命名的捕获组)

以下是如何使代码正常工作:

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

这里有一种奇特的方式,适合那些喜欢奇特的人:

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')
尽管我认为这只是因为它过于简单。

这段代码运行良好:

import re

text = re.sub(r'(Item)', '- \g<1>', 'A list of things: \nItem 1 \nItem 2')
print text
重新导入
text=re.sub(r'(项)',-\g',事物列表:\nItem 1\nItem 2')
打印文本
祝你好运

import re

text = re.sub(r'(Item)', '- \g<1>', 'A list of things: \nItem 1 \nItem 2')
print text