我有数百个公司报告.txt文件,我想从中提取一些信息。例如,文件的一部分如下所示:
Mr. Davido will receive a base salary of $700,000 during the initial and any subsequent
term. The Chief Executive Officer of the Company (the CEO) and the Board (or a committee
thereof) shall review Mr. Davidos base salary at least annually, and may increase it at
any time in their sole discretion
我正在尝试使用pyparsing来提取该人的基本工资值。
代码
from pyparsing import *
# define grammar
digits = "0123456789"
integer = Word( digits )
money = Group("$"+integer+','+integer + Optional(','+integer , ' '))
start = Word("base salary")
salary = start + money
#search
for t in text:
result = salary.parseString( text )
print result
这总是会出错:
pyparsing.ParseException: Expected W:(base...) (at char 0), (line:1, col:1)
经过一些简单的测试后,我发现使用这段代码我只能从特定的文本形式中找到我想要的东西:
"base salary $700,000......"
并且它只能识别该文本中出现的第一个案例。
所以我想知道是否有人可以帮助我。并且,如果可能的话,还要确定该人的姓名,并将名称和工资存储到数据框中。
非常感谢你。
答案 0 :(得分:1)
我先回答你的具体问题。当您定义了一个与文本开头的所有内容匹配的综合语法时,将使用parseString。由于您尝试从输入行中间的某处选择特定短语,请改用searchString或scanString。
作为pyparsing的作者,我会同意@ Tritium21 - 除非有一些你可以寻找的特定形式和短语,否则你会试图解析这种自然语言输入。