Python正規表現に問題があります。結果は regxe buddy では問題ないように見えますが、python では失敗します。
私が一致しなければならないデータのセットはリストです:
[' 101 0. 0.\n',
' 0. 100.\n',
' 1. 98.5107805\n',
' 2. 97.0464459\n',
' 3. 95.6065328\n', ... ]
2行目から始まるすべての数字を取得する必要があります。このために私は使用しました:
pattern = compile(r'\s*(?P<raw_time>\d*\.?\d*)\s+(?P<raw_value>\d*\.\d*)')
そして、すべてうまくいきました。リストを繰り返し処理し、すべての行の最初の値を「raw_time」で取得し、2 番目の値を「raw_value」で取得します。次に、加重データでも機能するように用語を拡張することになっていました。
したがって、データは次のようになりました。
[' 101 0. 0.\n',
' 0. 100. 1\n',
' 1. 98.5107805 1\n',
' 2. 97.0464459 1\n',
' 3. 95.6065328 1\n', ... ]
最初の 2 つのパラメーターを解析する必要があります。だから私はパターンを次のように変更しました:
pattern = compile(r'\s*(?P<raw_time>\d*\.?\d*)\s+(?P<raw_value>\d*\.\d*).+')
1を除くすべての行で正常に動作します。
働く:
In [35]: pattern.search('1. 98.5107805 1\n').groupdict()
Out[35]: {'raw_time': '1.', 'raw_value': '98.5107805'}
働く:
In [37]: pattern.search(' 0. 100. 1\n').groupdict()
Out[37]: {'raw_time': '0.', 'raw_value': '100.'}
働く:
[44]: pattern.search('1.98.5107805\n').groupdict() アウト[44]: {'raw_time': '1.', 'raw_value': '98.510780'}
動作していません:
In [46]: pattern.search(' 0. 100.\n').groupdict()
Out[46]: {'raw_time': '', 'raw_value': '0.'}
私は正規表現に大きく依存しています (確かにデモですが、今までは python と一貫していました)。
アドバイス?
tnx