使用正则表达式匹配项作为文本提取的标记

2024-06-16 03:00:00 发布

您现在位置:Python中文网/ 问答频道 /正文

到目前为止我的代码

# -*- coding: utf-8 -*-

import os, sys, re, codecs

第1部分

f = open("Krupp.txt", "r")
contents = f.read()

f.close() #close the file

date_pattern = "(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonnabend|Sonntag)(, )
([123][0-9]|[1-9])(. )
(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)
( )([0-2][0-9][0-9][0-9])"

# finds all dates, prints them below eachother and writes them to file 
(writing is for test purposes)
with open("testoutput.txt", "a+") as f:
    for m in re.finditer(date_pattern, contents):
        print m.group(0)
        f.write(m.group(0))
        f.write("\n")

第2部分

# extracts text between target1 and target2
target1 = 'date_1'
target2 = 'date_2'
elements = '{}(.+?){}'.format(target1,target2)
pattern = re.compile(elements, flags=re.DOTALL)
results = pattern.findall(contents)

我要搜索的文件

Mittwoch, 15. März 2017
14:30 Uhr
17:30 Uhr
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, 
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
sed diam voluptua.
Donnerstag, 16. März 2017
Samstag, 18. März 2017
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, 
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
sed diam voluptua.
Greifswald, 16 - 18 March 2017
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, 
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
Donnerstag, 16. März 2017
17:30 Uhr
19:00 Uhr
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, 
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
sed diam voluptua.

我的输出

Mittwoch, 15. März 2017

Donnerstag, 16. März 2017

Samstag, 18. März 2017

Donnerstag, 16. März 2017

我想要什么

如您所见,代码提取了以特定德语格式编写的日期。第二部分在两个字符串之间搜索。 我需要一种方法来使用从第1部分找到的日期作为第2部分的target1和target2。 这样我想提取这些部分:

Mittwoch, 15. März 2017
14:30 Uhr
17:30 Uhr
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, 
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
sed diam voluptua.

然后将这些部分写入单个文件。 有人能帮我吗


Tags: sedipsumloremdolorametsitdiamuhr