Python 是否有用于匹配和替换的单一功能?
我想知道是否有更简单的替代方法(例如,单个函数调用)来匹配和替换以下示例:Python 是否有用于匹配和替换的单一功能?,python,regex,Python,Regex,我想知道是否有更简单的替代方法(例如,单个函数调用)来匹配和替换以下示例: >>> import re >>> >>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math' >>> >>> match = re.match(r'^file://(.*)$', line) &
>>> import re
>>>
>>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>>
>>> match = re.match(r'^file://(.*)$', line)
>>> if match and match.group(1):
... substitution = re.sub(r'%20', r' ', match.group(1))
...
>>> substitution
'/windows-d/academic discipline/study objects/areas/formal systems/math'
谢谢。我想避开你的正则表达式问题,建议你使用其他方法:
>>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>> import urllib
>>> urllib.unquote(line)
'file:///windows-d/academic discipline/study objects/areas/formal systems/math'
然后,只需用一个切片剥离文件://
,或str。如有必要,替换
%20
(空格)不是此处唯一可能的转义字符,因此最好使用正确的工具执行此作业,而不是在以后有另一个字符需要取消转义时让正则表达式解决方案中断 您可以尝试下面的简单python代码
>>> import re
>>> line = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>> m = re.sub(r'%20|file://', r' ', line).strip()
>>> m
'/windows-d/academic discipline/study objects/areas/formal systems/math'
re.sub(r'%20 | file://',r',line).strip()
code用空格替换字符串%20
或file://
。再次使用strip()
函数删除所有前导空格和尾随空格
>>> import re
>>> s = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>> re.sub(r'^file://(.*)$', lambda m: m.group(1).replace('%20', ' '), s)
'/windows-d/academic discipline/study objects/areas/formal systems/math'
预期的输出是什么?准确地显示在输出中。您的意思是这<代码>/windows-d/学科/学习对象/领域/正式系统/数学代码>?是的@AvinashRajA simples.replace(“%20”和“”)
也会这样做(但是@wim的答案在这种特殊情况下显然更好)。
>>> s = 'file:///windows-d/academic%20discipline/study%20objects/areas/formal%20systems/math'
>>> s.replace('file://', '').replace('%20', ' ')
'/windows-d/academic discipline/study objects/areas/formal systems/math'