python - 使用正则表达式和 Python 识别包含唯一单词的特定段落的标题(和 French Judges)

标签 python regex

我正在对法国的法官任命系统进行一些数据分析,并使用一些代码来执行此操作。但我遇到了正则表达式问题。

我的数据由一大堆法院和法官任命组成。

这是一个示例列表:

Appellate Court of Paris

Blabla about the jugdge : Mr Dominique Martin, blahblahblah Blabla about the judge : Ms Jeanne Truc

District Court of Paris

Blabla about the jugdge : Mr François Dupont, blahblahblah Blabla about the jugdge : Mr Jean Dupuis, blahblahblah Blabla about the jugdge : Ms Marguerite Lorem, blahblahblah

District Court of Lyon

Blabla about the judge : Ms Lorena Ipsum, blablabh

其中有很多地方法院和上诉法院混合在一起。通常,在城市上诉法院之后是地区法院。

(对于阅读这篇文章的法国人,我将“Tribunal de grande instance”翻译成“District Court”,将“Cour d'appel”翻译成“Appellate Court”,如果所有内容都是英文的话会更容易理解)

然后我需要一份法院法官的名单。

为了实现这一点,我开始使用优秀的 ol' python 3 做一个正则表达式。首先,我得到了所有评委的名单,这要感谢先生和夫人(嗯,这是法语,所以 M. 和 Mme.)。然后,遍历此列表中的每个法官以查找他们被任命的到底在哪里。我写了类似的东西:

court = re.findall(r'(District Court of.+?|Appelate Court of.+?)\n.+?'+ judge, appointments, re.S)

“法官”变量是我正在寻找的当前法官的名字,“任命”是我正在对其进行正则表达式处理的列表。 Dotall 标志打开,如果你不了解 python,请忘记模式前的 'r',它只是关于如何解释后面字符串中的特殊字符。

(我也尝试过使用 re.search,但我认为 re.findall 更适合发现错误)

而且结果始终是列表中的第一个(例如:巴黎上诉法院)...就好像它是一个贪婪的请求,即使我用'?'标记了每个限定符。在 Python 中将量词标识为非贪婪的。

(我是法学院的学生,不是 CS 的学生,如果我在那里做错了什么,我请求原谅)。

注意:我正在解析的原始列表:http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000022472292 (注意那是一个丑陋的法国政府网站)。

最佳答案

使用 lxml解析 html:

import lxml.html as LH
import re

url='http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000022472292'
doc=LH.parse(url)
data=(p.text_content() for p in doc.xpath('//p'))
next(data) # Skip the paragraph before the first court
result={}
for court,text in zip(*[data]*2):
    court=court.strip()  
    names=re.findall(r'((?:M\.|Mme)[^,]+),',text)
    result[court]=names

print(result) 

产量 this result .

您链接到的页面实际上组织得很好。 (至少,我见过更糟糕的情况!;)。每个法庭都有自己的<p>标记,以及以下 <p>标签包含列出所有人的文本。因此,如果您使用 HTML 解析器查找所有 <p>标签,您可以快速梳理法院和人民。


grouper recipe zip(*[iter(...)]*2)用于单步执行 <p> -标签数据二<p> -一次标记。

关于python - 使用正则表达式和 Python 识别包含唯一单词的特定段落的标题(和 French Judges),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216729/

相关文章:

python - 如何通过python获取xml文件中没有标签的文本

Javascript Regex匹配我数组中的表情符号

python - 使用 Python 将多个文件写入一个文件,同时接受用户的输入以选择要扫描的文件

python - 将格式化字符串转换为日期时间

python - 如何使 Django 自定义管理命令参数不需要?

java - 正则表达式在组内捕获

regex - 查找不以 "<"开头的行,执行操作

python - 从 Google 电子表格中获取所有值

javascript - 使用 PyQt5 和 QWebEngineView 抓取 javascript 页面

JavaScript 正则表达式 : dynamic capture group