我有一个字符串
name = "Ben"
我变成了一个列表
word = list(name)
我想用星号替换列表中的字符。我怎么能这样做?
我尝试使用.replace
函数,但这太具体了,并没有立即更改所有字符。
我需要一个适用于任何字符串的通用解决方案。
答案 0 :(得分:11)
我想用星号
替换列表中的字符
相反,创建一个只有星号的新字符串对象,比如
word = '*' * len(name)
在Python中,您可以将字符串与数字相乘以获得相同的字符串连接。例如,
>>> '*' * 3
'***'
>>> 'abc' * 3
'abcabcabc'
答案 1 :(得分:2)
您可以通过以下方式用星号替换列表中的字符:
方法1
for i in range(len(word)):
word[i]='*'
这种方法是更好的IMO,因为没有使用额外的资源,因为列表中的元素实际上被星号“替换”了。
方法2
word = ['*'] * len(word)
OR
word = list('*' * len(word))
在此方法中,将创建一个长度相同的新列表(仅包含星号),并将其分配给“word”。
答案 2 :(得分:1)
我想用星号替换列表中的字符。我怎么能够 这样做?
我会非常字面地回答这个问题。有时您可能需要将其作为一个步骤执行,特别是在表达式
中使用它时您可以利用str.translate
方法并使用256大小的转换表来屏蔽所有字符到星号
>>> name = "Ben"
>>> name.translate("*"*256)
'***'
注意因为字符串是不可变的,所以它会在改变原始字符串的过程中创建一个新的字符串。
答案 3 :(得分:0)
可能您正在寻找类似的东西吗?
def blankout(instr, r='*', s=1, e=-1):
if '@' in instr:
# Handle E-Mail addresses
a = instr.split('@')
if e == 0:
e = len(instr)
return instr.replace(a[0][s:e], r * (len(a[0][s:e])))
if e == 0:
e = len(instr)
return instr.replace(instr[s:e], r * len(instr[s:e]))