2

次の形式の行を含むファイルがあります。

d    55    r:100:10000

55それを見つけて、intに解析したいと思います。これどうやってするの ?可変スペースインビトウィーンプルーフにしたいと思います。つまり、間には多かれ少なかれスペースが存在する可能性がありますが、その間dr確実に存在します。

4

3 に答える 3

5

簡単だ:

number = int(line.split()[1])

dと の間であるかどうかを実際に確認する必要がある場合はr

import re
number = int(re.search(r"d\s+(\d+)\s+r", line).group(1))
于 2013-04-09T10:49:14.710 に答える
3

このstr.split()メソッドは、デフォルトで任意幅の空白で分割されます。

>>> 'd    55     r:100:10000'.split()
['d', '55', 'r:100:10000']

真ん中の数字だけを選択すると、単純な選択になります。

>>> int('d    55     r:100:10000'.split()[1])
55

ドキュメントの引用:

sepが指定されていないか である場合None、別の分割アルゴリズムが適用されます。連続する空白の実行は単一の区切り文字と見なされ、文字列の先頭または末尾に空白がある場合、結果には先頭または末尾に空の文字列は含まれません。したがって、空の文字列または空白のみで構成される文字列をNoneセパレータで分割すると、 が返されます[]

于 2013-04-09T10:49:08.910 に答える
2
>>> line = 'd    55    r:100:10000'
>>> int(line.split()[1]) # By default splits by any whitespace
55

または、より効率的に、2 つの分割に制限することができます (2 番目の分割は整数を保持します)。

>>> int(line.split(None, 2)[1]) # None means split by any whitespace
55
于 2013-04-09T10:49:15.687 に答える