gpt4 book ai didi

python - PyParsing 的 searchString 与 StringStart() 和 StringEnd()

转载 作者:行者123 更新时间:2023-11-30 22:27:09 25 4
gpt4 key购买 nike

我正在尝试通过以下测试:

from pyparsing import Word, nums, StringStart, StringEnd
import pytest

def get_square_feet(string):
area = Word(nums+",")("area").setParseAction(lambda s, l, t: [int(t[0].replace(',', ''))])
expression = StringStart() + area + "sqft" + StringEnd()
return expression.parseString(string).get("area")

def test_get_square_feet():
assert get_square_feet("800 sqft") == 800
assert get_square_feet("9,000 sqft") == 9000

def test_get_square_feet_with_prefix():
assert get_square_feet("size: 12,000 sqft") is None

if __name__ == "__main__":
pytest.main([__file__])

但是,第二个测试失败,因为它导致 ParseError。相反,我想使用 searchString,但如果我在 get_square_feet 函数中用 searchString 替换 parseString,我也会收到错误,因为该函数返回 None。有人可以向我指出这里出了什么问题吗?

最佳答案

这是使用 pyparsing 捕获 ParseException 的相应代码:

from pyparsing import Word, nums, StringStart, StringEnd, ParseException

def get_square_feet(string):
area = Word(nums+",")("area").setParseAction(lambda s, l, t: [int(t[0].replace(',', ''))])
expression = StringStart() + area + "sqft" + StringEnd()
try:
return expression.parseString(string).get("area")
except ParseException:
return None

关于python - PyParsing 的 searchString 与 StringStart() 和 StringEnd(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016013/

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