2017-03-15 28 views
0

私は基本的に日記のように見えて、それをさらに処理するために各日付に関するすべての情報を抽出したいという大きなファイルを持っています。これを実現するために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. 

私は1試合(私が処理するために優れているか不明ですので、私は、のfindAllとfinditerを使用)として、それぞれの日付を返すコードを次のように日付を解析されました。

私は、変数としてそれぞれの一致を開始番号と終了点を形成する番号に割り当てる必要があります。

このようにして、ドキュメントを単一のイベントに分割したいと考えています。

問題は、マッチを文字列や変数として割り当てる方法がなく、役に立たないものが見つからないということです。

コード:

日付1 =( "Mittwoch、13 2017年9月")

日付2 =( "Mittwoch:

# 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 

だから、最後に、私はのようなものを持っていると思います、February 20,207 ")

これにより、Date1とDate2の間のすべてを抽出することができます。

は、あなたがあなたのファイルの行ごとに仕事ができるあなたの助けと努力

答えて

0

いただきありがとうございます。

1行に日付が含まれているかどうかを検出する関数を作成します。その関数で最初の日付を見つけたら、次の行をコンテンツとして収集してください。

日付を含む次の行をヒットすると、現在のコンテンツ行のリストを処理してからやり直します。ファイルの終わりに達するまで続けます。

日付が一貫して書式設定されている場合は、正規表現ではなく、解析のために日付ライブラリ(ドイツ語のローカリゼーションを使用するPythonの日時など)を使用することができます。

+0

ありがとうございますが、問題は、それが唯一のファイルではなく、これが必要な情報を抽出するためのテンプレートになることです。開始点と終了点が日付であるかどうかは異なります。だから私は一致から変数を検索し、それらの変数の間に抽出するためにabledにするための方法を必要とします。各マッチオブジェクトを発生順に変数にする簡単な方法はありませんか? – Elite

関連する問題