【问题标题】:Replace lowercase ASCII characters with X in Python [duplicate]在Python中用X替换小写ASCII字符[重复]
【发布时间】:2026-02-23 08:45:01
【问题描述】:

在字符串中用“X”替换小写字符的最简洁、最符合 Python 风格的代码是什么?例如,ABCDEFGhijklmnopQRSTUVwxyz 将变为 ABCDEFGXXXXXXXXXQRSTUVXXXX

【问题讨论】:

    标签: python string replace


    【解决方案1】:

    我会为此使用str.translate();轻松最快的方法。正则表达式不能为了速度而触及它。

    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):

    >>> import string
    >>> inputstring = 'ABCDEFGhijklmnopQRSTUVwxyz'
    >>> map = string.maketrans(string.ascii_lowercase, 'X' * len(string.ascii_lowercase))
    >>> inputstring.translate(map)
    'ABCDEFGXXXXXXXXXQRSTUVXXXX'
    

    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
    

    str.translate() 版本可以将任务完成速度提高 20 倍

    【讨论】:

      【解决方案2】:

      很简单:

      >>> import re
      >>> S='ABCDEFGhijklmnopQRSTUVwxyz'
      >>> re.sub('[a-z]', 'X', S)
      'ABCDEFGXXXXXXXXXQRSTUVXXXX'
      

      【讨论】:

        【解决方案3】:

        你可以使用正则表达式:

        import re
        output = re.sub( r'[a-z]', 'X', inputString )
        

        【讨论】: