我要处理字符串数据集,并用“.”替换“-”
我有这个数据集:
AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0
我想把“-”替换成“.”,所以所有出现数字**的地方都应该替换成数字。数字**
我尝试添加以下regex模式,但它也替换了字母表的“-”
[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]
我需要一个模式,无论字符串是什么,两个数字之间的“-”都应该替换为“.”
最佳答案
我们可以使用lookaround constructs [regular-expressions.info]来实现这一点:
from re import compile as recompile
rgx = recompile(r'(?<=\d)[-](?=\d)')
对于这个
rgx
,我们可以替换如下:>>> rgx.sub('.', 'AUDI XXX-R 2-0TS AUDI XXX-R 2-0T AUDI X-R 2-0')
'AUDI XXX-R 2.0TS AUDI XXX-R 2.0T AUDI X-R 2.0'
如果右边的数字是可选的,我们可以省略它,比如:
rgx = recompile(r'(?<=\d)[-]')
因此,这也将把
3-A
替换为3.A
。