我想处理一个字符串数据集,并将“-”替换为“。”。我有这个数据集:
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)
我需要这样的模式:无论字符串是两位数之间的“-”,都应替换为“。”。
我们可以为此使用环视构造[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为好。