Python正则表达式搜索和替换原始表达式的一部分
我是Python的新手,正在寻找一种方法,用字符串的[AZ]部分替换所有出现的“[AZ] 0”以摆脱某些数字用零填充。我用这个片段摆脱从外地整体发生的,我的处理:Python正则表达式搜索和替换原始表达式的一部分
import re
def strip_zeros(s):
return re.sub("[A-Z]0", "", s)
test = strip_zeros(!S_fromManhole!)
如何执行相同类型的程序,但不删除的首字母“[AZ] 0”表达?
在此先感谢!
你可以尝试像
In [47]: s = "ab0"
In [48]: s.translate(None, '0')
Out[48]: 'ab'
In [49]: s = "ab0zy"
In [50]: s.translate(None, '0')
Out[50]: 'abzy'
使用反向引用。
http://www.regular-expressions.info/refadv.html“\ 1到\ 9替换为第1到第9对捕获括号之间的文本匹配。”
http://docs.python.org/2/library/re.html#re.sub“反向引用,例如\ 6,被模式中由组6匹配的子字符串替换。”
未经检验的,但它应该是这样的:
return re.sub(r"([A-Z])0", r"\1", s)
配售的第一个字母一个捕获组内,并与\1
如果我正确地阅读这个问题,正则表达式应该是'r'([A-Z])0“'。 – 2013-03-16 18:51:48
@Janne Karila谢谢,编辑 – Patashu 2013-03-17 22:17:02
引用它,我喜欢Patashu的答案对于这种情况,但为求完整性,将函数传递给re.sub而不是替换字符串在更复杂的情况下可能更清晰。该函数应该采用单个匹配对象并返回一个字符串。
>>> def strip_zeros(s):
... def unpadded(m):
... return m.group(1)
... return re.sub("([A-Z])0", unpadded, s)
...
>>> strip_zeros("Q0")
'Q'
你的意思是在你的例子中有零个吗? – squiguy 2013-03-13 05:06:11