在python中如何用一个单词替换多个单词?
我有几个字符串,可能包含缩写或全名的东西,我想取代他们所有相同的变化的字 比如说, “8场演出”, “8GB”,以及 “8 gbs” 应该全部改为 “8千兆字节” 最好的方法是什么?他们每个人都有一个单独的替代品吗 此外,我还尝试对不止一个单词(即兆字节、兆字节)执行此操作。每个单词是否需要不同的替换,或者是否有方法将它们全部放在一个单词中 一个简单的方法就可以了在python中如何用一个单词替换多个单词?,python,string,replace,Python,String,Replace,我有几个字符串,可能包含缩写或全名的东西,我想取代他们所有相同的变化的字 比如说, “8场演出”, “8GB”,以及 “8 gbs” 应该全部改为 “8千兆字节” 最好的方法是什么?他们每个人都有一个单独的替代品吗 此外,我还尝试对不止一个单词(即兆字节、兆字节)执行此操作。每个单词是否需要不同的替换,或者是否有方法将它们全部放在一个单词中 一个简单的方法就可以了 >>> import re >>> s = 'gigabytes, foo gigs; foo
>>> import re
>>> s = 'gigabytes, foo gigs; foo gbs'
>>> re.sub('(gigabytes|gigs|gbs)','gigabytes',s)
'gigabytes, foo gigabytes; foo gigabytes'
对于多个替换,技巧是使用可调用(在本例中为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'
>>> 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'