我要处理字符串数据集,并用“.”替换“-”
我有这个数据集:

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

10-06 01:42
查看更多