【问题标题】:reading lines starting specifically with some criteria从某些标准开始的阅读行
【发布时间】:2014-09-20 17:27:18
【问题描述】:

我有一个巨大的数据文件:我需要提取以 U(1.0 ----) 开头的行,而不考虑行号,因为行号随每次运行而变化。
我尝试拆分和阅读,但输出无法处理。谁能帮帮我?

【问题讨论】:

  • 我是 python 新手,请您多解释一下
  • 哦,在 python 中!不是 bash?
  • 是的,在 python 中做同样的事情
  • 1) 向我们展示输入样本。 2) 告诉我们您要提取哪些输入行以及原因。 3) 向我们展示您在 Python 中为解决问题所做的工作。

标签: python linux


【解决方案1】:
  1. 你必须读取一个文件 (https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files)
  2. 然后循环遍历行并获取行的第一部分。
  3. 然后您需要检查是否与您为该任务设计的正则表达式匹配。

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    在每一行上使用startswith()字符串方法,并将它们添加到单独的列表中进行分析

    data = open("whatever").readlines()
    results = []
    for line in data:
       if line.startswith("U(1.0"):
          results.append(line)
    

    【讨论】:

      【解决方案3】:

      和manicphase的回答类似,用Python的startswith字符串方法挑出你感兴趣的行。

      with open('mydata.txt') as data:
          for line in data:
              if line.startswith('U(1.0 '):
                  # Do stuff here
      

      比 manicphase 的解决方案简单一点,速度更快,因为您不需要重新遍历列表,如果您有大量数据,可能会产生不利影响。

      我没有足够的声誉来评论 manicphase 的答案,所以我将在这里做一个说明:如果数据可以有多个小数点,1.0 之后的空格分隔符很重要(问题没有指定),否则它也可能匹配U(1.0234 xxxx)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多