gpt4 book ai didi

python - 如何用Python中的字符串替换一组或一组字符

转载 作者:行者123 更新时间:2023-12-04 00:09:26 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的脚本来替换文本中所有出现的特定组或字符集(或字符串集)。

在这种情况下,我将尝试用某个字符串替换所有字母“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

有没有更简单的方法呢?如果我需要替换更大组的字符或字符串怎么办?像这样链接它似乎并没有真正有效。

这可能是一个原始问题。但是,我仍处于学习阶段,所以也许我会在以后的类(class)中得到它。预先感谢您的任何建议。

最佳答案

我的知识告诉我有3执行此操作的不同方法,所有这些方法都比您的方法短:

  • 使用 for-loop
  • 使用 generator-comprehension
  • 使用 regular expressions


  • 首先,使用 for-loop .这可能是对您的代码最直接的改进,基本上只是减少了 5.replace 的线路上至 2 :
    def replace_all(text, repl):
    for c in "aeiou":
    text = text.replace(c, repl)
    return text

    您也可以使用 generator-comprehension 在一行中完成。 ,结合 str.join方法。这会更快(如果这很重要),因为它很复杂 O(n)因为我们将遍历每个字符并对其进行一次评估(第一种方法是复杂性 O(n^5),因为 Python 会针对不同的替换循环遍历 text 五次)。

    所以,这个方法很简单:
    def replace_all(text, repl):
    return ''.join(repl if c in 'aeiou' else c for c in text)

    最后,我们可以使用 re.sub 替换集合中的所有字符: [aeiou]与文字 repl .这是最短的解决方案,可能是我会推荐的:
    import re
    def replace_all(text, repl):
    return re.sub('[aeiou]', repl, text)

    正如我在开始时所说的,所有这些方法都完成了任务,所以我没有必要提供单独的测试用例,但它们确实像这个测试中看到的那样工作:
    >>> replace_all('hello world', 'x')
    'hxllx wxrld'

    更新

    一种新方法引起了我的注意: str.translate .
    >>> {c:'x' for c in 'aeiou'}
    {'a': 'x', 'e': 'x', 'i': 'x', 'o': 'x', 'u': 'x'}
    >>> 'hello world'.translate({ord(c):'x' for c in 'aeiou'})
    'hxllx wxrld'

    这个方法也是 O(n) ,所以和前两个一样有效。

    关于python - 如何用Python中的字符串替换一组或一组字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48350607/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com