gpt4 book ai didi

python - 正则表达式精确匹配

转载 作者:行者123 更新时间:2023-12-05 09:25:53 28 4
gpt4 key购买 nike

我有以下句子:"饭盒的大小在1.5l或1500ml左右"

如何将其更改为:“饭盒的大小在1.5升或1500毫升左右”

在某些情况下,该值也可能显示为带空格的“1.5 l 或 1500 ml”。

当我试图构建一个函数时,我无法捕获“l”或“ml”,或者它给我一个转义错误。

我试过:

def stnd(text):

text = re.sub('^l%',' liter', text)
text = re.sub('^ml%',' milliliter', text)

text = re.sub('^\d+\.\d+\s*l$','^\d+\.\d+\s*liter$', text)
text = re.sub('^^\d+\.\d+\s*ml$%','^\d+\.\d+\s*milliliter$', text)

return text

最佳答案

您可以使用字典列出所有单位作为键,并使用模式查找后跟 ml 的数字。或 l然后您可以将其用作字典的键以获取值。

(?<=\d)m?l\b

模式匹配:

  • (?<=\d)积极的向后看,断言左边的数字
  • m?l\b匹配一个可选的 m后跟 b 和单词边界

查看 regex demo .

例子

s = "The size of the lunch box is around 1.5l or 1500ml"
pattern = r"(?<=\d)m?l\b"
dct = {
"ml": "milliliter",
"l": "liter"
}
result = re.sub(pattern, lambda x: " " + dct[x.group()] if x.group() in dct else x, s)
print(result)

输出

The size of the lunch box is around 1.5 liter or 1500 milliliter

关于python - 正则表达式精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74840578/

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