【发布时间】:2023-03-12 23:06:01
【问题描述】:
以下是我需要解析的文本文件示例。
Lead Attorney: John Doe
Staff Attorneys: John Doe Jr. Paralegal: John Doe III
Geographic Area: Wisconsin
Affiliated Offices: None
E-mail: blah@blah.com
我需要解析所有键/值对并将其导入数据库。例如,我将在 [Lead Attorney] 列中插入“John Doe”。我启动了一个正则表达式,但在解析第 2 行时遇到了问题:
Staff Attorneys: John Doe Jr. Paralegal: John Doe III
我从以下正则表达式开始:
(\w*.?\w+):\s*(.)(?!(\w.?\w+:.*))
但这并不能解析出“Staff Attorneys: John Doe Jr.”和“律师助理:约翰·多伊三世”。即使键/值对在同一行,如何确保我的正则表达式为每个键/值对返回两个组?谢谢!
【问题讨论】:
-
没有办法,除非你假设第二个键只有一个单词。否则我们怎么知道关键是“Paralegal”还是“Jr.”。律师助理?
-
您事先知道所有可能的键吗?在这种情况下,可以使用
(paralegal|junior paralegal|junior associate)之类的东西。 -
这就是为什么我试图使用 Negative Lookahead 来防止另一个键被匹配 '(?!(\w.?\w+:.*))'...
-
@amicitas,不,我事先不知道所有可能的键。在该示例中,键是:首席律师、职员律师、律师助理、地理区域、附属办公室和电子邮件。 “John Doe III”将被导入律师助理。
-
有多少行中有两个 : 实例?为什么不直接解析文件,忽略您确定的每一行,然后吐出不确定解析的列表,以便您可以手动编辑它们,然后使用固定版本再次运行它?
标签: regex python-3.x