如何在python中用一个单词替换多个单词? [复制]

Posted

技术标签:

【中文标题】如何在python中用一个单词替换多个单词? [复制]【英文标题】:How to replace multiple words with one word in python? [duplicate] 【发布时间】:2015-09-11 04:03:44 【问题描述】:

我有一些可能包含缩写或全名的字符串,我想将它们全部替换为单词的相同变体。

例如,

“8 场演出”, “8 GB”,以及 “8GB” 应该全部更改为 “8 GB”

最好的方法是什么?对他们每个人都有单独的替换吗?

此外,我正在尝试对多个单词(即兆字节、太字节)执行此操作,是否每个单词都需要不同的替换,或者有没有办法将它们全部放在一起?

【问题讨论】:

【参考方案1】:

一个简单的re.sub 会为您解决问题。

>>> import re
>>> s = 'gigabytes, foo gigs; foo gbs'
>>> re.sub('(gigabytes|gigs|gbs)','gigabytes',s)
'gigabytes, foo gigabytes; foo gigabytes'

【讨论】:

【参考方案2】:
>>> import re
>>> re.sub(r'(\d+) (gigs|gigabytes|gbs)', r'\1 gigabytes', str)

对于多个替换,诀窍是使用可调用(在本例中为 lambda 函数)作为替换:

>>> gb='gigabytes'
>>> mb='megabytes'
>>> subs='gigs': gb, 'gigabytes': gb, 'gbs': gb, 'mbs': mb, ...
>>> str='there are 2048 mbs in 2 gigs'
>>> re.sub(r'(\d+) ()'.format('|'.join(subs.keys())), \
        lambda x: ' '.format(x.group(1), subs[x.group(2)]), str)
'there are 2048 megabytes in 2 gigabytes'

【讨论】:

以上是关于如何在python中用一个单词替换多个单词? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python用“单词”替换单词

如何在 OpenOffice 中用另一个字符组合替换某些字符组合?

Python:用 re.sub 替换列表中的多个特定单词

如何替换包含完整句子的列的每一行中的多个单词?

在 Python 中用冒号分割字符串

Excel - 查找和替换多个单词