【发布时间】:2013-03-31 18:15:55
【问题描述】:
我有一个包含以下格式行的文件:
d 55 r:100:10000
我想找到 55 并将其解析为 int。我怎样才能做到这一点 ?我想让它在证明之间可变空间。这意味着两者之间可能会有更多或更少的空格,但肯定会在d 和r 之间。
【问题讨论】:
标签: python string substring parseint
我有一个包含以下格式行的文件:
d 55 r:100:10000
我想找到 55 并将其解析为 int。我怎样才能做到这一点 ?我想让它在证明之间可变空间。这意味着两者之间可能会有更多或更少的空格,但肯定会在d 和r 之间。
【问题讨论】:
标签: python string substring parseint
这很简单:
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
或者更高效,您可以将其限制为两个拆分(第二个包含整数):
>>> int(line.split(None, 2)[1]) # None means split by any whitespace
55
【讨论】: