Python 3.x 我怎样才能把句子中的每一个字母换成一个句子而不弄坏它?
这是我的问题Python 3.x 我怎样才能把句子中的每一个字母换成一个句子而不弄坏它?,python-3.x,Python 3.x,这是我的问题 sentence = "This car is awsome." 我想做的是 sentence.replace("a","<emoji:a>") sentence.replace("b","<emoji:b>") sentence.replace("c","<emoji:c>") 句子。替换(“a”,“a”) 句子。替换(“b”和“) 句子。替换(“c”,“c”) 等等 当然,如果我这样做,“中的字母也会随着
sentence = "This car is awsome."
我想做的是
sentence.replace("a","<emoji:a>")
sentence.replace("b","<emoji:b>")
sentence.replace("c","<emoji:c>")
句子。替换(“a”,“a”)
句子。替换(“b”和“)
句子。替换(“c”,“c”)
等等
当然,如果我这样做,
“
中的字母也会随着我的继续被替换掉。那么,我怎样才能以其他方式做到这一点呢?正如卡洛斯·冈萨雷斯所建议的:
创建映射dict并将其按顺序应用于每个字符:
sentence = "This car is awsome."
# mapping
up = {"a":"<emoji:a>",
"b":"<emoji:b>",
"c":"<emoji:c>",}
# apply mapping to create a new text (use up[k] if present else default to k)
text = ''.join( (up.get(k,k) for k in sentence) )
print(text)
首先从a
生成o
,然后从任何o
(或之前的a
)生成k
),并且必须触摸每个字符两次才能实现
使用
避免这种情况。正如卡洛斯·冈萨雷斯所建议的: 创建映射dict并将其按顺序应用于每个字符:
sentence = "This car is awsome."
# mapping
up = {"a":"<emoji:a>",
"b":"<emoji:b>",
"c":"<emoji:c>",}
# apply mapping to create a new text (use up[k] if present else default to k)
text = ''.join( (up.get(k,k) for k in sentence) )
print(text)
首先从a
生成o
,然后从任何o
(或之前的a
)生成k
),并且必须触摸每个字符两次才能实现
使用
避免这种情况。如果您希望一次替换超过1个字符,则使用正则表达式更容易做到这一点。灵感来自 输出:
This <emoji:c><emoji:a>r is <emoji:a>wsome.
ThYippi car Yippi aWhatNotome.
Doku:
如果您想使用“regex”特定字符作为regex模式使用,则必须格外小心密钥,如果您想使用具有另一含义的“regex”特定字符-f.e.
+*?()[]^$
如果您想一次替换多个字符,则使用regex可以更轻松地完成此操作。灵感来自
输出:
This <emoji:c><emoji:a>r is <emoji:a>wsome.
ThYippi car Yippi aWhatNotome.
Doku:
如果您想使用“regex”特定字符作为regex模式使用时具有另一种含义,则必须格外小心您的密钥-f.e.
+*?()[]^$
将其分配回:句子=句子。替换(“a”),这不是重点,我需要将所有字母替换为单词,我不是在回答你,而是在解释当你做replace
时你应该做什么。创建一个字典,将字母映射到命令(例如dict={“a”;“})。然后只需依次阅读句子,用正确的表情符号替换每个字母,并在结尾处将其连接起来,谢谢你,把它重新分配:句子=句子。替换(“a”),这不是重点,我需要将所有字母替换为单词,而不要与已替换的字母混淆。我不是在回答你,而是在解释你在执行替换时应该做什么。创建一个将字母映射到命令的字典(例如dict={“a”;“}然后用正确的表情符号依次替换每个字母,并在结尾处重新连接,谢谢你可以通过添加“e”:“
到up
”来轻松愚弄这段代码。。。我想这是问题的重点。@norok2你试过了吗?如果你一个接一个地替换,你可以愚弄它,但是列表comp没有。它作用于句子的每个字符
,并创建一个itermedial生成器,该生成器要么保留该字符,要么替换该字符。然后将发电机重新粘在一起。没有任何内容会被多次处理。-如果您按照建议添加到up
,则文本将是此r为wsom
您是对的。我读得太快了。但是这个技巧不适用于多字符替换,对吗?@norok2如果你想替换多于1个字符,那么使用regex和sub-see更容易做到这一点-但是这需要re
模块作为导入,在这种情况下不需要-请参阅我发布的第二个答案。你可以通过添加“e”:
toup
。。。我想这是问题的重点。@norok2你试过了吗?如果你一个接一个地替换,你可以愚弄它,但是列表comp没有。它作用于句子的每个字符
,并创建一个itermedial生成器,该生成器要么保留该字符,要么替换该字符。然后将发电机重新粘在一起。没有任何内容会被多次处理。-如果您按照建议添加到up
,则文本将是此r为wsom
您是对的。我读得太快了。但是这个技巧不适用于多字符替换,对吗?@norok2如果你想替换多于1个字符,使用regex和sub-see更容易做到这一点-但是这需要re
模块作为导入,在这种情况下不需要-请参阅我发布的第二个答案。