(ドイツの) 銀行からのトランザクション レターを解析しようとしています。次の文字列からすべての数字を抽出したいのですが、思ったより難しいことがわかりました。オプション2は、私が望むほとんどのことを行います。私は今、例えば80もキャプチャするように変更したいと考えています。
私の最初の試みは、ガベージのみを返すオプション 1 です。多くの空の文字列が返されるのはなぜですか? 少なくとも最初の \d+ からの数字が必ずあるはずですよね?
オプション 3 が機能する (または少なくとも期待どおりに機能する) ので、どういうわけか私は自分の質問に答えています。オプション2が機能しない理由について、私は主に頭を悩ませていると思います。
# -*- coding: utf-8 -*-
import re
my_str = """
Dividendengutschrift für inländische Wertpapiere
Depotinhaber : ME
Extag : 18.04.2013 Bruttodividende
Zahlungstag : 18.04.2013 pro Stück : 0,9800 EUR
Valuta : 18.04.2013
Bruttodividende : 78,40 EUR
*Einbeh. Steuer : 20,67 EUR
Nettodividende : 78,40 EUR
Endbetrag : 57,73 EUR
"""
print re.findall(r'\d+(,\d+)?', my_str)
print re.findall(r'\d+,\d+', my_str)
print re.findall(r'[-+]?\d*,\d+|\d+', my_str)
出力は
['', '', '', '', '', '', ',98', '', '', '', '', ',40', ',67', ',40', ',73']
['0,9800', '78,40', '20,67', '78,40', '57,73']
['18', '04', '2013', '18', '04', '2013', '0,9800', '18', '04', '2013', '78,40', '20,67', '78,40', '57,73']