gpt4 book ai didi

python - 使用 pyparsing 从字符串中获取所有数字作为列表

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

我需要使用 pyparsing 从一些自由文本中提取所有数字作为列表。数字将包含科学计数法。

这是我的语法:

digits = '0123456789'
#straight number = 5, 10 ,65535
strt_num = pp.Word(digits)
decimal = pp.Literal('.')
dec_num = strt_num+decimal+strt_num

multiply = pp.Literal('×')
minus = pp.Literal('−')

sci_num = (dec_num ^ strt_num)+multiply+'10'+pp.Optional(minus)+strt_num

num = sci_num ^ dec_num ^ strt_num

num.parseString('5 × 10−5 and then there is also 0.0001')

这给了我:

(['5', '\xc3\x97', '10', '\xe2\x88\x92', '5'], {})

这有两个问题:

  1. 它为我提供了不同匹配部分的数字(而不是单个字符串)
  2. 它只给我第一个匹配的号码

对于问题1,我尝试使用文档中的Combine 类,如下所示:

num = pp.Combine(sci_num ^ dec_num ^ strt_num)

但是由于某种原因,这不再匹配整个数字,只是给了我这个:

(['5'], {})

对于问题 2,我在文档中找不到类似于“findall”的任何内容。唯一的选择是创建 n 元语法(例如从 5 克或其他内容开始),查看它们是否匹配,如果不匹配,则将 n 变小。数字之间的文本可以是任何内容(它不是像我在这里看到的其他问题中那样干净的逗号分隔的数字列表)

但我觉得一定有更好的方法。任何帮助表示赞赏。谢谢!

最佳答案

我只需要使用 searchString 而不是 parseString (对于问题 2)并使用 asList() 方法来获取列表列表(匹配字符)。然后我只需加入各个列表即可获取字符串(针对问题 1)。

关于python - 使用 pyparsing 从字符串中获取所有数字作为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884168/

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