Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中如何用一个单词替换多个单词?_Python_String_Replace - Fatal编程技术网

在python中如何用一个单词替换多个单词?

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

我有几个字符串,可能包含缩写或全名的东西,我想取代他们所有相同的变化的字

比如说,

“8场演出”, “8GB”,以及 “8 gbs” 应该全部改为 “8千兆字节”

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

此外,我还尝试对不止一个单词(即兆字节、兆字节)执行此操作。每个单词是否需要不同的替换,或者是否有方法将它们全部放在一个单词中

一个简单的方法就可以了

>>> 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'