我试图用str.replace方法用2行重写5-8行。
s = 'pa55w-r@'
result = ''
for c in s:
if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
result += '*'
else:
result += c
print(result)下面是我到目前为止所得到的。
s = 'pa55w-r@'
result = ''
for c in s:
if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
result = s.replace(c,"*")
print(result)但是,我不知道为什么输出是
pa55w-r*而不是
pa55w*r*原始代码有哪些?不过,我在Using str.replace in a for loop尝试过与另一个示例进行比较,建议添加一个one语句,我实际上删除了该语句,以便将代码从3行压缩到2行。
啊,我几乎忘了提到,我不能使用regex方法,这似乎是我在搜索堆栈溢出的技巧时所见过的常见答案。
发布于 2019-10-08 04:55:05
问题是结果变量只看到一个替换的通行证。修复方法是将连续的赋值分配给s,以便它越来越接近预期的结果:
s = 'pa55w-r@'
for c in s:
if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
s = s.replace(c,"*")
print(s)这一产出如下:
pa55w*r*https://stackoverflow.com/questions/58280294
复制相似问题