我是一名律师和 python 初学者,所以我既 (a) 愚蠢又 (b) 完全不在我的车道上。
我正在尝试将正则表达式模式应用于文本文件。该模式有时可以跨越多条线。我对文本文件中的这些行特别感兴趣:
Considered and decided by Hemingway, Presiding Judge; Bell,
Judge; and \n
\n
Dickinson, Emily, Judge.
我想单独搜索,提取,然后打印评委的名字。到目前为止,我的代码如下所示:
import re
def judges():
presiding = re.compile(r'by\s*?([A-Z].*),\s*?Presiding\s*?Judge;', re.DOTALL)
judge2 = re.compile(r'Presiding\s*?Judge;\s*?([A-Z].*),\s*?Judge;', re.DOTALL)
judge3 = re.compile(r'([A-Z].*), Judge\.', re.DOTALL)
with open("text.txt", "r") as case:
for lines in case:
presiding_match = re.search(presiding, lines)
judge2_match = re.search(judge2, lines)
judge3_match = re.search(judge3, lines)
if presiding_match or judge2_match or judge3_match:
print(presiding_match.group(1))
print(judge2_match.group(1))
print(judge3_match.group(1))
break
当我运行它时,我可以得到 Hemingway 和 Bell,但是在两次换行之后我得到了第三个判断的“AttributeError: 'NoneType' object has no attribute 'group'”。
经过反复试验,我发现我的代码只读取第一行(直到“Bell, Judge; and”)然后退出。我认为 re.DOTALL 会解决它,但我似乎无法让它发挥作用。
我已经尝试了一百万种方法来捕获换行符并获取整个内容,包括 re.match、re.DOTALL、re.MULTILINE、"".join、"".join(lines.strip()) 和任何内容否则我可以靠墙扔东西。
几天后,我屈服于寻求帮助。感谢您所做的一切。
(顺便说一句,我没有运气让正则表达式与 ^ 和 $ 字符一起工作。它似乎也讨厌 . 在 Judge3 正则表达式中的转义。)
万千封印
相关分类