gpt4 book ai didi

python - 如何删除重复的字母,但添加一些异常(exception)字母

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

我正在尝试使用 python 从 Instagram 进行数据清理。
我需要删除那些重复的字母,但在 (a,g) 上只删除它们直到有 2 个重复的字母 (aa,gg)
所以它看起来像这样
输入:mengganti、maaf、ppuuutttiiiihhh、mmmmeeeeerrrraaaah、maaagggz
所需输出:mengganti、maaf、putih、meraah、maaggz
我目前用正则表达式做的是这样的:re.compile(r'(.)\1{1,}', re.IGNORECASE).sub(r'\1',kalimat)输入:mengganti、maaf、ppuuutttiiiihhh、mmmmeeeeerrrraaaah、maaagggz
当前输出:menganti、maf、putih、merah、magz
注意:它不必使用正则表达式

最佳答案

您可以先抓拍ag并更换为第 1 组 2 次。

([ag])\1+
模式匹配:
  • ([ag])捕获 第 1 组 , 匹配 ag
  • \1+重复组 1 中匹配的相同字符 1+ 次

  • 然后替换除 a 以外的所有字符 g或空白字符,并替换为单个组 1 以删除重复项。
    ([^\sag])\1+
    模式匹配:
  • (捕获 第 1 组
  • [^\sag]匹配除 a 或 g 之外的非空白字符

  • )关闭群 1
  • \1+重复组 1 中匹配的相同字符 1+ 次

  • 例如
    import re

    s = "mengganti, maaf, ppuuutttiiiihhh, mmmmeeeeerrrraaaah, maaagggz"

    print(re.sub(
    r"([^\sag])\1+",
    r"\1",
    re.sub(r"([ag])\1+", r"\1\1", s))
    )
    输出
    mengganti, maaf, putih, meraah, maaggz
    Python demo .

    或者使用带有交替的单个模式 |组合具有 2 个捕获组的 2 个模式,并使用 re.sub 和 lambda:
    import re

    pattern = r"([ag])\1+|([^\sag])\2+"
    s = "mengganti, maaf, ppuuutttiiiihhh, mmmmeeeeerrrraaaah, maaagggz"
    result = re.sub(
    pattern,
    lambda x: x.group(1) * 2 if x.group(1) else x.group(2),
    s
    )

    if result:
    print(result)
    输出
    mengganti, maaf, putih, meraah, maaggz
    查看另一个 Python demoregex demo

    关于python - 如何删除重复的字母,但添加一些异常(exception)字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68244844/

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