【发布时间】:2023-03-21 16:00:01
【问题描述】:
有没有简单直接的方法来转这个字符串:
"aBCd3Fg"
进入:
"a**d3*g"
在 python 2.7 中?
【问题讨论】:
标签: python string python-2.7 replace character
有没有简单直接的方法来转这个字符串:
"aBCd3Fg"
进入:
"a**d3*g"
在 python 2.7 中?
【问题讨论】:
标签: python string python-2.7 replace character
不确定您需要多快,但如果您正在寻找最快的解决方案。 python 字符串模块的translate 函数是一个稍微迂回的方法,但通常是更高效的方法:
import string
transtab = string.maketrans(string.uppercase, '*'*len(string.uppercase))
"aBCd3Fg".translate(transtab)
>>>'a**d3*g'
我总是对有多少人不知道这个技巧感到惊讶。 python IMO 中最受保护的秘密之一
【讨论】:
import re
print re.sub(r'[A-Z]', '*', "aBCd3Fg")
【讨论】:
string = ''.join(['*' if x.isupper() else x for x in string])
【讨论】:
'*' if r == r.upper() else r 缩短为等效的 (r,'*')[r.isupper()]。
r.isupper()?
一个简单的解决方案:
input = "aBCd3Fg"
output = "".join(['*' if 'A' <= char <= 'Z' else char for char in input ])
#Long version
input = "aBCd3Fg"
output = ''
for char in input:
output = output + '*' if ord('A') <= ord(char) <= ord('Z') else output + char
print output
【讨论】:
你也可以这样做:
for x in myString:
if (x == 'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'"
x = '*'
这是一个可以完成工作的一小段代码。
【讨论】: