2

我有一个文件,其中包含以下格式的行:

d    55    r:100:10000

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

4

3 回答 3

5

这很容易:

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

如果您确实需要检查它是否在 and 之间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未指定或 is 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

或者更高效,您可以将其限制为两个拆分(第二个包含整数):

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