gpt4 book ai didi

python - 使用单词列表的正则表达式

转载 作者:行者123 更新时间:2023-11-28 21:14:18 24 4
gpt4 key购买 nike

我正在使用 Python。

我有一些字符串:

'1 banana', '100 g of sugar', '1 cup of flour'

我需要从数量上区分食物。我有一个数量类型的数组

数量 = ['g', 'cup', 'kg', 'L']
altern = '|'.join(数量)

因此,通过使用正则表达式,我想为 '1 cup of flour' 获取示例:'flour''1 cup of flour ',对于 '1 banana' :'1''banana'

我写了这个正则表达式来匹配上面字符串的数量部分:

\d{1,3}\s<altern>?\s?(\bof\b)?

但我对此非常不确定......特别是关于如何在正则表达式中引入 altern 变量。

最佳答案

我认为您的 amountsunits,所以我冒昧地修正了这个用词不当的问题。我建议使用命名分组来简化对输出的理解。

import re

units = [ 'g', 'cup', 'kg', 'L' ]
anyUnitRE = '|'.join(units)

inputs = [ '1 banana', '100 g of sugar', '1 cup of flour' ]

for input in inputs:
m = re.match(
r'(?P<amount>\d{1,3})\s*'
r'(?P<unit>(' + anyUnitRE + r')?)\s*'
r'(?P<preposition>(of)?)\s*'
r'(?P<name>.*)', input)
print m and m.groupdict()

输出会是这样的:

{'preposition': '', 'amount': '1', 'name': 'banana', 'unit': ''}
{'preposition': 'of', 'amount': '100', 'name': 'sugar', 'unit': 'g'}
{'preposition': 'of', 'amount': '1', 'name': 'flour', 'unit': 'cup'}

所以你可以这样做:

if m.groupdict()['name'] == 'sugar':

amount = int(m.groupdict()['amount'])
unit = m.groupdict()['unit']

关于python - 使用单词列表的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788566/

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