次の形式の行を含むファイルがあります。
d 55 r:100:10000
55
それを見つけて、intに解析したいと思います。これどうやってするの ?可変スペースインビトウィーンプルーフにしたいと思います。つまり、間には多かれ少なかれスペースが存在する可能性がありますが、その間d
にr
確実に存在します。
簡単だ:
number = int(line.split()[1])
d
と の間であるかどうかを実際に確認する必要がある場合はr
、
import re
number = int(re.search(r"d\s+(\d+)\s+r", line).group(1))
この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
セパレータで分割すると、 が返されます[]
。
>>> 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