2024-10-01 11:31:52 发布
网友
我有一个变量device='A/B/C/X1',它在另一个文件中被注释掉了。同一设备可以有多个实例,例如'A/B/C/X1@1',..@2等等。所有这些设备都在另一个前缀为*的文件中注释掉。在
device='A/B/C/X1'
'A/B/C/X1@1'
..@2
*
我想删除*,但不影响类似的设备,如'A/B/C/X**10**'。在
'A/B/C/X**10**'
我尝试使用regex简单地用下面的代码行替换一个模式,但是我得到了一个InvalidExpression错误。在
InvalidExpression
line=re.sub('^*'+device+'@',device+'@',line)
请帮忙。在
def replace_all(text): if text in ['*']: text = text.replace(text, '') return text my_text = 'adsada*asd*****dsa*****' result = "".join(map(replace_all, my_text)) print result
或者
您需要转义星号,因为它在regex语法中有含义: line=re.sub(r'^\*'+device+'@',device+'@',line)。在
line=re.sub(r'^\*'+device+'@',device+'@',line)
转义用于构造正则表达式的变量也是一个好主意: line=re.sub(r'^\*'+re.escape(device)+'@',device+'@',line)
line=re.sub(r'^\*'+re.escape(device)+'@',device+'@',line)
或者
^{pr2}$您需要转义星号,因为它在regex语法中有含义:
line=re.sub(r'^\*'+device+'@',device+'@',line)
。在转义用于构造正则表达式的变量也是一个好主意:
line=re.sub(r'^\*'+re.escape(device)+'@',device+'@',line)
相关问题 更多 >
编程相关推荐