我正在处理一个项目的一部分,如果可能的话,它会使用https url来补充http url&#39。
问题是,为javascript正则表达式解析器编写的正则表达式,但我在python中使用该正则表达式。为了兼容,我会在解析为valide python正则表达式时重写正则表达式。
例如,我给出了正则表达式:
https://$1wikimediafoundation.org/
我会这样说一个正则表达式:
https://\1wikimediafoundation.org/
我的问题是我不知道该怎么做(将$
转换为\
)
此代码无效:
'https://$1wikimediafoundation.org/'.replace('$', '\')
生成以下错误:
SyntaxError: EOL while scanning string literal
此代码无误地运行:
'https://$1wikimediafoundation.org/'.replace('$', '\\')
但生成错误的输出:
'https://\\1wikimediafoundation.org/'
答案 0 :(得分:1)
实际上它有效:
>>> 'https://$1wikimediafoundation.org/'.replace('$', '\\')
'https://\\1wikimediafoundation.org/'
>>> print 'https://$1wikimediafoundation.org/'.replace('$', '\\')
https://\1wikimediafoundation.org/
当您执行'https://$1wikimediafoundation.org/'.replace('$', '\\')
时,它会返回字符串的__repr__
(〜表示),您可以看到特殊字符。
通过打印,您使用的是__str__
,可读版本。 (请参阅__str__
vs __repr__
上的this answer)
答案 1 :(得分:1)
试试这个:
'https://$1wikimediafoundation.org/'.replace('$', r'\')
添加r"\"
会自动转义您尝试执行的backslash
。
答案 2 :(得分:0)
您在https://regex101.com/处测试了正则表达式,然后将其更改为python。
另外,要替换匹配的组,可以在以下行上使用re.sub
模块:
re.sub(r"'([^']*)'", r'{\1}', col ) )
替换
'Protein_Expectation_Value_Log(e)', 'Protein_Intensity_Log(I)'
{Protein_Expectation_Value_Log(e)}, {Protein_Intensity_Log(I)}
更多内容,您可以参考here