首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用str.replace在for循环中用星号替换非字母数字字符

使用str.replace在for循环中用星号替换非字母数字字符
EN

Stack Overflow用户
提问于 2019-10-08 04:41:16
回答 1查看 114关注 0票数 1

我试图用str.replace方法用2行重写5-8行。

代码语言:javascript
复制
s = 'pa55w-r@'
result = ''
for c in s:
    if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
    result += '*'
else:
    result += c
print(result)

下面是我到目前为止所得到的。

代码语言:javascript
复制
s = 'pa55w-r@'
result = ''
for c in s:
    if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
        result = s.replace(c,"*")
print(result)

但是,我不知道为什么输出是

代码语言:javascript
复制
pa55w-r*

而不是

代码语言:javascript
复制
pa55w*r*

原始代码有哪些?不过,我在Using str.replace in a for loop尝试过与另一个示例进行比较,建议添加一个one语句,我实际上删除了该语句,以便将代码从3行压缩到2行。

啊,我几乎忘了提到,我不能使用regex方法,这似乎是我在搜索堆栈溢出的技巧时所见过的常见答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-08 04:55:05

问题是结果变量只看到一个替换的通行证。修复方法是将连续的赋值分配给s,以便它越来越接近预期的结果:

代码语言:javascript
复制
s = 'pa55w-r@'
for c in s:
    if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
        s = s.replace(c,"*")
print(s)

这一产出如下:

代码语言:javascript
复制
pa55w*r*
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58280294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档