在Python中用X替换小写ASCII字符
用字符串中的“X”替换小写字符的最干净、最具Python风格的代码是什么?例如,在Python中用X替换小写ASCII字符,python,string,replace,Python,String,Replace,用字符串中的“X”替换小写字符的最干净、最具Python风格的代码是什么?例如,ABCDEFGhijklmnopQRSTUVwxyz将变成abcdefgxxxxxxqrstuvxxx您可以使用正则表达式: import re output = re.sub( r'[a-z]', 'X', inputString ) 非常简单: >>> import re >>> S='ABCDEFGhijklmnopQRSTUVwxyz' >>> re.s
ABCDEFGhijklmnopQRSTUVwxyz
将变成abcdefgxxxxxxqrstuvxxx
您可以使用正则表达式:
import re
output = re.sub( r'[a-z]', 'X', inputString )
非常简单:
>>> import re
>>> S='ABCDEFGhijklmnopQRSTUVwxyz'
>>> re.sub('[a-z]', 'X', S)
'ABCDEFGXXXXXXXXXQRSTUVXXXX'
我会用它;很容易找到最快的方法。正则表达式在速度上无法达到这一点
Python 2版本:
import string
map = string.maketrans(string.ascii_lowercase, 'X' * len(string.ascii_lowercase))
mapped = inputstring.translate(map)
Python 3版本:
import string
map = str.maketrans(dict.fromkeys(string.ascii_lowercase, 'X'))
mapped = inputstring.translate(map)
演示(Python 2):
str.translate()
此处的magniture阶数更快:
>>> import timeit
>>> import re
>>> def regex_replace(s, _sub=re.compile(r'[a-z]').sub):
... return _sub('X', s)
...
>>> regex_replace(inputstring)
'ABCDEFGXXXXXXXXXQRSTUVXXXX'
>>> timeit.timeit('f(s)', 'from __main__ import regex_replace as f, inputstring as s')
2.6076979637145996
>>> timeit.timeit('s.translate(m)', 'from __main__ import inputstring as s, map as m')
0.13378620147705078
str.translate()
>>> import timeit
>>> import re
>>> def regex_replace(s, _sub=re.compile(r'[a-z]').sub):
... return _sub('X', s)
...
>>> regex_replace(inputstring)
'ABCDEFGXXXXXXXXXQRSTUVXXXX'
>>> timeit.timeit('f(s)', 'from __main__ import regex_replace as f, inputstring as s')
2.6076979637145996
>>> timeit.timeit('s.translate(m)', 'from __main__ import inputstring as s, map as m')
0.13378620147705078