如何在Python中使用re替换两位数之间的字符?

Sai*_*Ali 5 python regex

我想处理一个字符串数据集,并将“-”替换为“。”。我有这个数据集:

AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0
Run Code Online (Sandbox Code Playgroud)

我希望将“-”替换为“。” 因此,所有具有数字-number **的事件都应替换为数字.number **

我尝试添加以下正则表达式模式,但它也替换了字母的“-”

[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]
Run Code Online (Sandbox Code Playgroud)

我需要这样的模式:无论字符串是两位数之间的“-”,都应替换为“。”。

Wil*_*sem 6

我们可以为此使用环视构造[regular-expressions.info]

from re import compile as recompile

rgx = recompile(r'(?<=\d)[-](?=\d)')
Run Code Online (Sandbox Code Playgroud)

为此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'
Run Code Online (Sandbox Code Playgroud)

如果右边的数字是可选的,我们可以忽略它,例如:

rgx = recompile(r'(?<=\d)[-]')
Run Code Online (Sandbox Code Playgroud)

因此,这将取代3-A使用3.A为好。