Python字符串替换,重新匹配以及re.sub公司在单个操作中(如果在字符串末尾,则替换字符)

2024-04-19 08:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,我需要替换一些字符,可能会产生一些麻烦与其他字符。在

我想优化所需的操作数量:

# Replace % at end of string
find_char = re.match( r'.+\%[a-zA-Z0-9]+', line)
if find_char:
    line=re.sub(r'\%','PCT',line)

这里我想替换%,但只有当它出现在字符串的末尾时,我才能用re.sub在一个单独的操作中完成这个操作吗?在


Tags: ofre脚本数量stringmatchlinefind
3条回答
 find_char = re.match( r'.+\%[a-zA-Z0-9]+', line)
        if find_char:
            line=re.sub(r'\%$','PCT',line)

使用$匹配末尾的字符

当然,只需使用$指定匹配应该在字符串的末尾:

>>> import re
>>> re.sub("%$", "o", "fo%")
'foo'
>>> re.sub("%$", "o", "f%o")
'f%o'

我想你是认真的。它将字符串末尾的%符号替换为PCT

>>> import re
>>> m = re.sub(r'(?<=\S)%(?= |$)', r'PCT', 'foo%bar foo% bar%')
>>> m
'foo%bar fooPCT barPCT'

如果您想替换一个%符号,它前面有一个空格,后面跟着一个空格,那么试试这个方法

^{pr2}$

或者

>>> import regex
>>> m = regex.sub(r'(?<=^|[\S\s])%(?= |$)', r'PCT', '% foo%bar % foo% bar%')
>>> m
'PCT foo%bar PCT fooPCT barPCT'

相关问题 更多 >