使用结构更换在for循环中用星号替换非字母数字字符的步骤

2024-10-03 13:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图重写第5-8行只有2行使用结构更换方法

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搜索技巧期间看到的常见答案。你知道吗


Tags: 方法代码inforifnotresult结构
1条回答
网友
1楼 · 发布于 2024-10-03 13:17:23

问题是结果变量只能看到一个替换过程。解决方法是对s进行连续赋值,使其越来越接近预期结果:

s = 'pa55w-r@'
for c in s:
    if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
        s = s.replace(c,"*")
print(s)

这将输出:

pa55w*r*

相关问题 更多 >