【问题标题】:Find number in string between spaces and parse it在空格之间的字符串中查找数字并解析它
【发布时间】:2013-03-31 18:15:55
【问题描述】:

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

d    55    r:100:10000

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

【问题讨论】:

    标签: python string substring parseint


    【解决方案1】:

    这很简单:

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

    如果你真的需要检查它是否在dr之间,那么使用

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

    【讨论】:

      【解决方案2】:

      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 分隔符拆分空字符串或仅包含空格的字符串将返回 []

      【讨论】:

      • 哇,伙计们,你们的速度太快了!非常感谢。
      【解决方案3】:
      >>> 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-18
        • 1970-01-01
        • 1970-01-01
        • 2016-02-28
        • 2014-12-03
        • 1970-01-01
        • 2017-07-26
        相关资源
        最近更新 更多