在空格之间查找字符串中的数字并解析它

时间:2013-04-09 10:47:48

标签: python string substring parseint

我的文件包含以下格式的行:

d    55    r:100:10000

我想找到55并将其解析为int。我怎样才能做到这一点 ?我想让它在变量空间中间证明。这意味着两者之间可能存在更多或更少的空格,但肯定会在dr之间。

3 个答案:

答案 0 :(得分:4)

这很简单:

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

如果您确实需要检查它是否在dr之间,请使用

import re
number = int(re.search(r"d\s+(\d+)\s+r", line).group(1))

答案 1 :(得分: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分隔符分开将返回[]

答案 2 :(得分:2)

>>> line = 'd    55    r:100:10000'
>>> int(line.split()[1]) # By default splits by any whitespace
55

或者效率更高,可以将其限制为两个分割(第二个分割保持整数):

>>> int(line.split(None, 2)[1]) # None means split by any whitespace
55