0
我有20'000+个法庭文档我想从中提取特定数据点:日期,文档编号,判决书。我正在使用Python和Regex来执行此操作。更多Pythonic用正则表达式编写函数
判决书有三种语言(德语,法语和意大利语),其中一些格式稍有不同。我正在尝试开发各种数据点的功能,这些数据点将这些以及不同的语言加以考虑。
我发现我的功能非常笨拙。有没有人得到更pythonic的方式来发展这些功能?
def gericht(doc):
Gericht = re.findall(
r"Beschwerde gegen [a-z]+ [A-Z][a-züöä]+ ([^\n\n]*)", doc)
Gericht1 = re.findall(
r"Beschwerde nach [A-Za-z]. [0-9]+ [a-z]+. [A-Z]+ [a-z]+ [a-z]+[A-Za-z]+ [a-z]+ [0-9]+. [A-Za-z]+ [0-9]+ ([^\n\n]*)", doc)
Gericht2 = re.findall(
r"Revisionsgesuch gegen das Urteil ([^\n\n]*)", doc)
Gericht3 = re.findall(
r"Urteil des ([^\n\n]*)", doc)
Gericht_it = re.findall(
r"ricorso contro la sentenza emanata il [0-9]+ [a-z]+ [0-9]+ [a-z]+ ([^\n\n]*)", doc)
Gericht_fr = re.findall(
r"recours contre l'arrêt ([^\n\n]*)", doc)
Gericht_fr_1 = re.findall(
r"recours contre le jugement ([^\n\n]*)", doc)
Gericht_fr_2 = re.findall(
r"demande de révision de l'arrêt ([^\n\n]*)", doc)
try:
if Gericht != None:
return Gericht[0]
except:
None
try:
if Gericht1 != None:
return Gericht1[0]
except:
None
try:
if Gericht2 != None:
return Gericht2[0]
except:
None
try:
if Gericht3 != None:
return Gericht3[0]
except:
None
try:
if Gericht_it != None:
return Gericht_it[0]
except:
None
try:
if Gericht_fr != None:
Gericht_fr = Gericht_fr[0].replace('de la ', '').replace('du ', '')
return Gericht_fr
except:
None
try:
if Gericht_fr_1 != None:
Gericht_fr_1 = Gericht_fr_1[0].replace('de la ', '').replace('du ', '')
return Gericht_fr_1
except:
None
try:
if Gericht_fr_2 != None:
Gericht_fr_2 = Gericht_fr_2[0].replace('de la ', '').replace('du ', '')
return Gericht_fr_2
except:
None
什么是正则表达式的预期输入,你提到一个文档,你可以举一个例子文件 – depperm
如果这是**工作代码**,你认为可以改进,考虑[codereview.se。但请注意,您可以将各种'Gericht'列入列表中,并对其进行迭代。另外'试试:'除了'bare:'外''是一个反模式(http://blog.codekills.net/2011/09/29/the-evils-of--except--/),并且'pass '比随便选择'无'更好。 – jonrsharpe
这里有一些[示例文件](https://www.dropbox.com/sh/17t0lvyii89pbay/AADLO1y6bwg0ZRoRGK3aPPnoa?dl=0)有帮助吗? – BarJacks