list - Python 列表理解 - 替换字符串中的多个字母
问题描述
我刚开始学习 Python 并尝试编写代码来替换给定字符串中字母的所有实例。我正在使用理解,下面的代码似乎有效,但根据我的理解,这不应该有效。它应该只是替换了其中一个字母,而不是全部。请看下面的代码。我以为它只会替换第一个字母“C”,但它确实替换了两个“C”。如何?
谢谢!
'''
word_before = 'ABCABCDDEEF'
letter_id = 2
letter_to_replace = word[letter_id]
word_after = [word_before.replace(x, '_') for i, x in enumerate(word_before) if i==letter_id]
word_after = str(word_after)
print(word_after)
'''
解决方案
你的代码在做什么:“如果 i == 2,给 whole_word.replace('C', '_'),否则什么都不做”
你想要它做什么:如果 i == 2,给出“_”,否则给出原始字符(仅替换第一个字母)
word_before = 'ABCABCDDEEF'
letter_id = 2
letter_to_replace = word[letter_id] # This is not used, since you're checking via index not letter
word_after = ['_' if i == letter_id else x for i, x in enumerate(word_before)] # Correct expression
word_after = ''.join(word_after) # Combines ['A', 'B'] -> 'AB' (list -> string)
print(word_after) # AB_ABCDDEEF
推荐阅读
- javascript - 将对象传递给 Router.push NextJs 上的查询
- apache-flink - 在 apache flink 上运行 apache Beam
- javascript - 使用 JS 检测系统服务标签
- applescript - Applescript 不运行用户命令
- tensorflow - 我的 keras 后端 tensorflow 不使用 gpu?
- r - 为什么我在 data[rows, ] 中出现错误:“closure”类型的对象不是子集
- android - 错误:WebView 已从 react native 中删除
- c# - 如果函数在 C# 中执行超过一定时间,如何重新加载函数?
- javascript - 从 HTML 上的 javascript 获取信息
- css - 单击静态模态背景放大模态内容并将滚动条添加到背景