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”:
to
up
。。。我想这是问题的重点。@norok2你试过了吗?如果你一个接一个地替换,你可以愚弄它,但是列表comp没有。它作用于
句子的每个字符
,并创建一个itermedial生成器,该生成器要么保留该字符,要么替换该字符。然后将发电机重新粘在一起。没有任何内容会被多次处理。-如果您按照建议添加到
up
,则
文本将是
此r为wsom
您是对的。我读得太快了。但是这个技巧不适用于多字符替换,对吗?@norok2如果你想替换多于1个字符,使用regex和sub-see更容易做到这一点-但是这需要
re
模块作为导入,在这种情况下不需要-请参阅我发布的第二个答案。