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

时间:2019-07-08 19:32:01

标签: python regex

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

AUDI XXX-R 2-0TS
AUDI XXX-R 2-0T
AUDI X-R 2-0

我希望将'-'替换为'。'因此,所有出现的号码为number-number **的地方都应替换为number.number **

我尝试添加以下正则表达式模式,但是它代替了字母的'-'

[^a-z-A-Z]?(\d)-(\d)?[a-zA-Z]?[a-z-A-Z]

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

1 个答案:

答案 0 :(得分:6)

为此,我们可以使用lookaround constructs [regular-expressions.info]

fullcalendar: {
    firstHour: 9,
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'listDay,listWeek,month,listMonth,'
    },
    slotMinutes: 30,
    theme:false,
    views: {
        today: {buttonText: 'Today'},
        listWeek: {buttonText: 'Week'},
        listDay: {buttonText: 'Day'},
        listMonth: {buttonText: 'List'},
        month: {buttonText: 'Month'}
    },
    defaultView: 'month'
},

为此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