【问题标题】:python file readingpython文件读取
【发布时间】:2011-01-12 23:13:14
【问题描述】:

我有文件 /tmp/gs.pid 的内容

client01: 25778

我想从中检索第二个单词。 IE。 25778.

我试过下面的代码,但是没有用。

>>> f=open ("/tmp/gs.pid","r")
>>> for line in f:
    ...   word=line.strip().lower()
    ...   print "\n -->" , word

【问题讨论】:

  • 谢谢大家 现在它的工作。

标签: python file string


【解决方案1】:
>>> open("/tmp/gs.pid").read().split()[1]
'25778'

【讨论】:

    【解决方案2】:

    如果所有的行都是abc: def 的形式,你可以提取第二部分

    second_part = line[line.find(": ")+2:]
    

    如果不是,您需要先验证line.find(": ") 是否真的返回一个非负数。

    with open("/tmp/gs.pid") as f:
       for line in f:
          p = line.find(": ")
          if p != -1:
            second_part = line[p+2:].lower()
            print "\n -->", second_part
    

    【讨论】:

    • find() 检查可以简化为if ': ' in line:,但在这种情况下您需要拆分而不是使用查找索引。
    【解决方案3】:
    word="client01: 25778"
    pid=word.split(": ")[1] #or word.split()[1] to split from the separator
    

    【讨论】:

      【解决方案4】:

      试试这个:

      >>> f = open("/tmp/gs.pid", "r")
      >>> for line in f:
          ...   word = line.strip().split()[1].lower()
          ...   print " -->", word
      >>> f.close()
      

      它将以小写形式打印每行的第二个单词。 split() 将获取您的行并将其拆分为任何空白并返回一个列表,然后使用 [1] 进行索引将采用列表的 second 元素,lower() 会将结果转换为小写。请注意,检查该行是否至少有 2 个单词是有意义的,例如:

      >>> f = open("/tmp/gs.pid", "r")
      >>> for line in f:
          ...   words = line.strip().split()
          ...   if len(words) >= 2:
          ...      print " -->", words[1].lower()
          ...   else:
          ...      print 'Line contains fewer than 2 words.'
      >>> f.close()
      

      【讨论】:

        猜你喜欢
        • 2018-03-04
        • 1970-01-01
        • 2021-12-22
        • 2014-09-21
        • 2017-09-15
        • 2015-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多