【问题标题】:Find associated value to a keyword in file with python使用python在文件中查找关键字的关联值
【发布时间】:2010-09-14 09:21:29
【问题描述】:

对不起,初学者的python问题,但我找不到任何地方如何做到这一点,所以请耐心等待。

我正在尝试从包含关键字后跟一个值的文件中提取值: 示例:

length 95 width 332 length 1253 length 345 width 22

例如,我如何提取与关键字“长度”相关的所有值?

【问题讨论】:

    标签: python string


    【解决方案1】:
    >>> s = 'length 95 width 332 length 1253 length 345 width 22'
    >>> import re
    >>> re.findall(r'length (\w+)', s)
    ['95', '1253', '345']
    

    这也可以,但它有额外的限制:

    >>> sp = s.split()
    >>> [sp[i+1] for i, l in enumerate(sp) if l == 'length']
    ['95', '1253', '345']
    

    【讨论】:

    • @Theo:收集所有连续单词字符。
    【解决方案2】:

    “re”模块应该为您做。否则,如果您知道(可能很短)输入中的(可能很少)关键字,请采取粗略的方式并进行一些字符串切片。

    【讨论】:

      【解决方案3】:

      以下代码可能会对您有所帮助。我没有测试过,所以你可能需要做一些调整,但它应该给你基本的想法

      import re
      
      f = open('filename', 'r')
      for line in f.readlines():
        for m in re.finditer('length\s+(?P<number>\d+)', line):
          print m.group('number')
      

      【讨论】:

      • 是的,是的……抱歉打错了……经过一些检查,上面的脚本现在可以工作了
      【解决方案4】:

      您将不得不拆分内容,例如像这样(如果您正在阅读整个文件):

      with open("filename", "rb") as f:
          l = f.read().split()
          valuesForLengthKeyword = tuple(int(l[i+1])
                                         for i in xrange(0, len(l), 2)
                                         if l[i] == "length")
      
      print valuesForLengthKeyword
      

      这将打印一个像 (95, 1253, 345) 这样的元组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-30
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-10
        相关资源
        最近更新 更多