【问题标题】:Read lines until find specific characters读取行直到找到特定字符
【发布时间】:2018-04-12 12:26:55
【问题描述】:

我正在尝试读取一个文件(读取该文件中的每一行,包括字母、数字和字符)。该脚本需要正常工作,文件将相似但有一些变化。

现在它会在发现一行如下所示时读取:“**HWCOLOR COMP 1066 30”。我需要脚本读取所有行,直到找到“ **HW ”。下面的脚本适用于解释的第一个问题。

如何编写脚本来读取文件,直到找到“**HW”并停在那里?

我尝试将 '**HWCOLOR COMP 1066 30" 替换为 **HW" 但它不起作用,因为所有字符都不匹配。

data = [] 

with open('valvebody_nodes_rec.txt') as f:
    # Skips text before the beginning of the interesting block:
    for line in f:
        if line.strip() == '*NODE, SYSTEM=R':
            break    

    # Reads text until the end of the block:
    for line in f:
        if line.strip() == '**HWCOLOR COMP       1066    30':
            break
        data.append([x.strip() for x in line.split(',')])   #intersect text

【问题讨论】:

  • 您是否尝试使用:if line.startswith("**HW"): 作为条件
  • begin 是否以您要查找的字符串开头?它们是唯一上线的内容吗?
  • @Kenstars 从来没想过。我会试试的。
  • @pstatix 只有内容就行了。该行将始终以“**HW ...”开头。

标签: python filereader


【解决方案1】:

我建议使用正则表达式而不是字符串匹配。 https://docs.python.org/3/library/re.html

match = re.search('your regex here', line)
if match:
    ...

如果您不熟悉正则表达式,请查找教程,一旦您了解了基础知识,请玩一些 Regex Golf。正则表达式非常强大和有用,所以我强烈建议学习它们。

或者,你也可以做类似的事情

if line.strip().startswith('**HW'):

if '**HW' in line:

【讨论】:

  • 您回答的第二部分对我有用。我会期待你的推荐。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多