我正在尝试制作一个简单的脚本来替换文本中所有出现的特定组或字符集(或字符串集)。
在这种情况下,我将尝试用特定字符串替换所有字母“a、e、i、o、u”。
我的脚本:
def replace_all(text, repl):
text1 = text.replace("a", repl)
text2 = text1.replace("e", repl)
text3 = text2.replace("i", repl)
text4 = text3.replace("o", repl)
text5 = text4.replace("u", repl)
return text5
有没有更简单的方法呢?如果我需要替换更大的字符或字符串组怎么办?像这样链接它似乎并不是真的有效。
这可能是一个原始问题。但是,我仍处于学习阶段,所以也许我会在以后的课程中得到它。预先感谢您的任何建议。
原文由 Blacho 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的知识告诉我有
3
不同的方法,所有这些都比你的方法短:for-loop
generator-comprehension
regular expressions
首先,使用
for-loop
。这可能是对您的代码最直接的改进,本质上只是将5
行与.replace
减少到2
您也可以使用
generator-comprehension
结合str.join
方法在一行中完成。这会更快(如果这很重要),因为它很复杂O(n)
因为我们将遍历每个字符并对它进行一次评估 (第一种方法是复杂性O(n^5)
因为 Python 会通过text
循环五次以进行不同的替换) 。所以,这个方法很简单:
最后,我们可以使用
re.sub
替换集合中的所有字符:[aeiou]
文本repl
。这是最短的解决方案,可能也是我推荐的:正如我在开始时所说,所有这些方法都完成了任务,因此我没有必要提供单独的测试用例,但它们确实如此测试所示工作:
更新
我注意到了一种新方法:
str.translate
。这个方法也是
O(n)
,所以和前两个一样有效。