【发布时间】:2019-10-08 04:41:16
【问题描述】:
我正在尝试使用 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 的另一个示例进行比较,但是,建议添加一个我实际上已删除的 else 语句,以将代码从 3 行压缩为 2 行。任何输入将不胜感激
啊,我差点忘了提,我不能使用 regex 方法,这似乎是我迄今为止在整个 stackoverflow 中搜索提示时看到的常见答案。
【问题讨论】:
-
Your first method is working fine,我无法重现您的错误。请注意,
re.sub(r'[^A-Za-z0-9]', '*', s)是一种更加简洁明了的方法恕我直言。 -
感谢蒂姆的输入。目前刚刚完成了关于类和流控制的学习,我们的教授通过一些字符串方法来增加一些东西。当我更深入地了解时,肯定会研究正则表达式!