1

以下は Python スニペットです。

line = '3520005,"Toronto (Ont.)",C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n'そして、2 つのコンマに挟まれた最初の数字を取得できるようにしたいと考えています。,2503281,

しかし、私が思いついたのは適切に機能していないようですm = re.search("\,([0-9])*\,",line)。数字の最後の桁のみを保持します。

4

3 に答える 3

3

アスタリスクは括弧の中に入れる必要があります:

`",([0-9]*),"

それ以外の場合は、数字の 1 つだけをキャプチャします。また、コンマの前にバックスラッシュは必要ありませんが、それは問題ではありません。

少なくとも 1 つの桁があることを確認する+代わりにを使用したり、 を使用して桁数の最小/最大制限を設定したりすることもできます。*{}

于 2013-02-12T05:23:11.190 に答える
3

非正規表現のソリューションは次のとおりです。

>>> [item for item in line.split(',')[1:] if item.isdigit()][0]
'2503281'
于 2013-02-12T05:24:51.547 に答える
0

コンマ区切りの値を解析するために正規表現を使用すると、見落とし、脆弱性、および潜在的なエラーが発生することに注意してください。これを csv モジュールができる何かに強制することができれば、あなたはより良いでしょう。

とはいえ、これは機能します:

import re

st='''line = '3520005,"Toronto (Ont.)",
C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n'''

print re.findall(r"(\d+\.?\d*)",st)

プリント:

['3520005', '2503281', '2481494', '0.9', '1040597', '979330', '630.1763', '3972.4', '1']

これが正規表現の説明です。

于 2013-02-12T06:56:26.543 に答える