Dan*_*age -1 python string replace
用字符串中的'X'替换小写字符的最干净,最Pythonic的代码是什么?例如,ABCDEFGhijklmnopQRSTUVwxyz会成为ABCDEFGXXXXXXXXXQRSTUVXXXX.
我会用str.translate()它; 轻松最快的方法.正则表达式无法触及此速度.
Python 2版本:
import string
map = string.maketrans(string.ascii_lowercase, 'X' * len(string.ascii_lowercase))
mapped = inputstring.translate(map)
Run Code Online (Sandbox Code Playgroud)
Python 3版本:
import string
map = str.maketrans(dict.fromkeys(string.ascii_lowercase, 'X'))
mapped = inputstring.translate(map)
Run Code Online (Sandbox Code Playgroud)
演示(Python 2):
>>> import string
>>> inputstring = 'ABCDEFGhijklmnopQRSTUVwxyz'
>>> map = string.maketrans(string.ascii_lowercase, 'X' * len(string.ascii_lowercase))
>>> inputstring.translate(map)
'ABCDEFGXXXXXXXXXQRSTUVXXXX'
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
该str.translate()版本设法将任务速度提高20倍.
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |