例如,假设我想要将以下文本中的每个单词'a‘更改为'an’:
"a apple is a| awesome fruit."假设"|“字符是一个需要处理的垃圾字符。我希望最终产品如下所示:
"an apple is an| awesome fruit."到目前为止,我得到的最接近的代码是以下代码:
>>> s = 'a apple is a| awesome fruit.'
>>> regex = '[^A-Za-z0-9](a)[^A-Za-z0-9]'
>>> s = re.sub(regex, 'an', s)
>>> s
'a apple isan awesome fruit.'出现在字符串开头的'a‘根本不会受到影响,而'a’后面跟着垃圾,则会破坏该区域中的字符串。我理解为什么会发生这种情况,我只是不知道我应该如何使正则表达式模式适应这种情况。我的计划是只更改子字符串组(a),但我不知道如何在re.sub中使用它。怎样才能只替换子字符串组?对于这种情况,有没有更好的使用正则表达式模式的方法?
发布于 2014-01-18 15:19:05
>>> s = 'a apple is a| awesome fruit.'
>>> regex = r'\ba\b'
>>> s = re.sub(regex, 'an', s)
>>> s
'an apple is an| awesome fruit.'发布于 2014-01-18 15:22:45
在这里,单词边界的\b是一个很好的答案,更通用的构造称为“前视”和“后视”。在这里,它看起来像:
re.sub(r'\ba\b', 'an', s)或
re.sub(r'((?<=\W)|^)a((?=\W)|$)', 'an', s)https://stackoverflow.com/questions/21201260
复制相似问题