gpt4 book ai didi

python - 如何在异常(exception)情况下应用 re.sub()

转载 作者:行者123 更新时间:2023-12-04 08:17:05 25 4
gpt4 key购买 nike

我正在尝试编写一个词汇游戏。
我正在使用正则表达式来隐藏我必须猜测的单词。我对正则表达式使用的语法不满意——除了简单的例子,我很困惑。
以动词为例

'to crank (sth) up'
我想把它变成:
to   _ _ _ _ _   (sth)  _ _ 
该程序将从词汇 CSV 文件中获取。我的约定是添加 (sth)(smb)用于及物动词。我不想在括号之间隐藏那些位。同样,我不想隐藏 to表示不定式。
到目前为止,我正在应用的转换是:
chosen_word = "to crank (sth) up"

# To make the space between words double for better legibility
hidden_word = re.sub("\s", " ", chosen_word)

# To hide the letters of the word
hidden_word = re.sub("[a-z]", "_ ", hidden_word)
但这导致:
_ _    _ _ _ _ _   ( _ _ _ )  _ _
我如何编码 re.sub()将所有字母字符转换为 _ 的方法 除了 图案 to sthsmb ?

最佳答案

您可以捕获排除项,然后使用动态替换模式:

hidden_word = re.sub(r"(\bto\b|\(s(?:th|b)\))|[a-z]", lambda x: x.group(1) or "_ ", hidden_word)
Python demo .正则表达式详细信息:
  • (\bto\b|\(s(?:th|b)\)) - 第 1 组:一个完整​​的词 to(sth)(sb)
  • | - 或
  • [a-z] - 小写 ASCII 字母
  • lambda x: x.group(1) or "_ " - 匹配要么替换为 Group 1 值(如果匹配),要么替换为下划线加空格。
  • 关于python - 如何在异常(exception)情况下应用 re.sub(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65659600/

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