私は正規表現の初心者で、助けが必要です。テーブルを表すテキストがあります。私はそれが7つの列で構成されることを知っています:
| int | int mixed with -. | unicode string with everything | float | float | int | float |
問題は、floatが数千のスペースを使用して表現されることです(1234,43 => 1 234,43)。さらに、文字列はスペースを含み、数字で終わることができます。私はこのようなことを試しました(改行文字のストライプごとに):
regex = re.compile(r"(\d+) ([\d.-]+) (.*) ([\d+ ]?\d+,\d+) ([\d+ ]?\d+,\d+) (\d+) ([\d+ ]?\d+,\d+)$", re.UNICODE)
w = regex.findall(line)
残念ながら、すべての場合に機能するとは限りません。いくつかのテストデータ:
49 602 DSKOD SMCX 262,59 1 131,30 1 1 131,30
49 602 DSKOD SMCX 3 5 262,59 1 131,30 1 1 131,30
50 61-201 łóćźż 1 2 669,50 334,75 1 334,75
51 1-214 AÓŻĆÓDS" 70,35 350,18 3 105,53
私が得ているように、数千のケースは問題があります:
[]
[]
[(u'50', u'61-201', u'\u0142\xf3\u0107\u017a\u017c 1 2', u'669,50', u'334,75', u'1', u'334,75')]
[(u'51', u'1-214', u'A\xd3\u017b\u0106\xd3DS"', u'70,35', u'350,18', u'3', u'105,53')]
3番目の例2
では、文字列の最後を次の列に配置します。Python 2.7で、これを適切に一致させる方法についていくつかの手がかりがあることを知っていますか?後でこのUnicodeと戦います。