将匹配项从 findall/finditer 转换为变量或字符串



我有一个大文件,基本上看起来像日记,想要提取有关每个日期的所有信息以进一步处理它。

File looks like this:
Mittwoch, 13. September 2017
19:00 Uhr
20: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. At vero eos et accusam et justo duo dolores et ea rebum.
Mittwoch, 20. September 2017
18:00 Uhr
19: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. At vero eos et accusam et justo duo dolores et ea rebum.

为了实现这一点,我使用以下代码解析了日期,该代码将每个日期返回为一个匹配项(我使用了findall和finditer,因为我不确定哪个更好处理(。

我现在想将每个匹配项分配为一个带有数字的变量,以形成开始和终点。

通过这种方式,我希望将文档拆分为单个事件。

问题是,我不知道如何将匹配项分配为字符串或变量,也找不到任何有用的东西。

法典:

    # finditer
    matches = re.finditer((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])", contents) # finds all Dates and shows them in a List (Day , Number . Month ( ) Year)
    for match in matches:
        print "{g}".format(g=match.group()) # returns dates below eachother without ''
    # findall
    matches = re.findall("(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])", contents) # finds all Dates and shows them in a List (Day , Number . Month ( ) Year)
    for aTuple in matches:
        print "n",('%r%r%r%r%r%r%r' % aTuple) # print findings after new line below eachother with ''
    for Weekday, Comma, Day, Dot, Month, Space, Year in matches:
        print "n", Weekday, Comma, Day, Dot, Month, Space, Year

所以最后我想有这样的东西:

Date1 = ("Mittwoch, 13.2017 年 9 月"(

Date2 = ("Mittwoch, 20.2017 年 9 月"(

这将允许提取日期 1 和日期 2 之间的所有内容。

感谢您的帮助和努力

您可以逐行处理文件。

创建一个函数来检测单行是否包含日期。使用该功能找到第一次约会后,开始收集以下行作为内容。

当您点击包含日期的下一行时,处理当前的内容行列表,然后重新开始。继续,直到到达文件末尾。

如果您的日期格式一致,您可能需要依赖日期库(例如具有德语本地化的 Python 日期时间(而不是正则表达式进行解析。

最新更新