我的文件包含以下格式的行:
d 55 r:100:10000
我想找到55
并将其解析为int。我怎样才能做到这一点 ?我想让它在变量空间中间证明。这意味着两者之间可能存在更多或更少的空格,但肯定会在d
和r
之间。
答案 0 :(得分:4)
这很简单:
number = int(line.split()[1])
如果您确实需要检查它是否在d
和r
之间,请使用
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