所以我有一个像7.50x
的号码,我想将其转换为7.5x
。我想过使用正则表达式。我可以轻松匹配此表达式,例如使用re.search('[0-9].[0-9]0x', string)
。但是,我很困惑如何使用re.sub
方法替换每个这样的数字。例如,第二个参数应该是什么?
re.sub('[0-9].[0-9]0x', ?, string)
答案 0 :(得分:1)
re.sub(r'([0-9]\.[0-9])0x', r'\1x', num)
<强>测试强>
>>> import re
>>> num="7.50x"
>>> re.sub(r'([0-9]\.[0-9])0x', r'\1x', num)
'7.5x'
r'\1x'
此处\1
是从第一个捕获组([0-9]\.[0-9])
例如,对于输入7.50x
,捕获组与保存在7.5
\1
匹配
答案 1 :(得分:1)
0+(?![1-9])(?=[^.]*$)
试试这个。看看演示。
http://regex101.com/r/hQ9xT1/14
x=7.50x
re.sub(r"0+(?![1-9])(?=[^.]*$)","",x)
答案 2 :(得分:1)
使用正向前瞻和后瞻性断言。
>>> import re
>>> num="7.50x"
>>> re.sub(r'(?<=\d\.\d)0(?=x)', r'', num)
'7.5x'
(?<=\d\.\d)
,数字0
之前的数字将采用此数字点数字格式。匹配后的字符(0
)必须为x
\.
匹配一个文字点。