我正在尝试解析来自我的(德国)银行的交易信函。我想从以下字符串中提取所有数字,结果比我想象的要难。选项 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']