繁体   English   中英

在python中使用pyparsing解析非结构化文本

[英]parsing unstructured text using pyparsing in Python

我有数百个公司报告.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......"

并且只能识别该文本中出现的第一种情况。

所以我想知道是否有人可以帮助我。 并且,如果可能的话,还要标识该人的姓名,并将姓名和薪水存储到数据框中。

非常感谢。

我会先回答您的具体问题。 当您定义了将与文本开头的所有内容匹配的综合语法时,将使用parseString。 由于您正在尝试从输入行中间的某个地方选择特定的短语,因此请改用searchString或scanString。

作为pyparsing的作者,我将同意@ Tritium21-除非您可以查找某些特定的形式和短语,否则您将无法解析这种自然语言输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM