如何从输入中替换每个字符? (python3.x)

时间:2015-10-17 16:15:43

标签: python-3.x replace

我必须通过替换以下内容将文本替换为180°的文本:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ?!.-()<>%$',:_/\

通过

ɐqɔpǝɟƃɥᴉɾʞ˥ɯuodbɹsʇnʌʍxʎz∀qƆpƎℲפHIſʞ˥WNOԀΌɹS┴∩ΛMX⅄Z0ƖᄅƐㄣϛ9ㄥ86 ¿¡˙-)(><%$,':‾\/

我开始为每个角色输入.replace('',''),但它们必须更简单吗?

1 个答案:

答案 0 :(得分:1)

使用str.translate() method,使用静态str.maketrans() function从两个字符串构建转换表:

transmap = str.maketrans(
    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ?!.-()<>%$',:_/\\",
    "ɐqɔpǝɟƃɥᴉɾʞ˥ɯuodbɹsʇnʌʍxʎz∀qƆpƎℲפHIſʞ˥WNOԀΌɹS┴∩ΛMX⅄Z0ƖᄅƐㄣϛ9ㄥ86 ¿¡˙-)(><%$,':‾\\/")

result = inputstring.translate(transmap)

演示:

>>> transmap = str.maketrans(
...     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ?!.-()<>%$',:_/\\",
...     "ɐqɔpǝɟƃɥᴉɾʞ˥ɯuodbɹsʇnʌʍxʎz∀qƆpƎℲפHIſʞ˥WNOԀΌɹS┴∩ΛMX⅄Z0ƖᄅƐㄣϛ9ㄥ86 ¿¡˙-)(><%$,':‾\\/")
>>> 'The quick brown fox jumps over the lazy dog, 42 times!'.translate(transmap)
"┴ɥǝ bnᴉɔʞ qɹoʍu ɟox ɾnɯds oʌǝɹ ʇɥǝ ˥ɐzʎ poƃ' ㄣᄅ ʇᴉɯǝs¡"

您可能也希望反转结果;您可以使用[::-1]切片:

>>> 'The quick brown fox jumps over the lazy dog, 42 times!'.translate(transmap)[::-1]
"¡sǝɯᴉʇ ᄅㄣ 'ƃop ʎzɐ˥ ǝɥʇ ɹǝʌo sdɯnɾ xoɟ uʍoɹq ʞɔᴉnb ǝɥ┴"