当使用python语言到达某个字符串时,如何停止从XML文件中读取行

时间:2018-04-18 15:59:07

标签: xml python-3.x readlines

我目前正在处理此代码,该代码从XML输入文件创建摘要。但是,摘要会获取文件末尾的无关信息。例如,我想读取XML文件的所有行,除非它到达以下字符串标题“注意APPELLANT”。我想忽略该字符串标题后面的所有行。

另外,我正在以二进制模式读取文件,因为XML文件格式不正确。那么有一种方法可以在二进制模式下读取文件时执行此操作。

1 个答案:

答案 0 :(得分:0)

这是我从你的问题中理解的: 一旦遇到子字符串"通知APPELLANT"您想停止阅读您正在以二进制模式阅读的文件。我很困惑你是否想要读取包含子字符串后面的子字符串的行。但我假设您不想在包含此子字符串的行之后读取行。

   with open("test_xml.xml", "rb") as f:
   ...:     for line in f:
   ...:         if b'NOTICE TO APPELLANT' in line:
   ...:             print(line) #you can replace this function call
   ...:             break
   ...:         else:
   ...:             print(line)

我的输入文件" test_xml.xml"看起来像这样......

<note>
    <to>Tove</to>
    <from>Jani</from>
        <heading>Reminder</heading>
        <body>Don't forget me this weekend!</body>
        <sometag>NOTICE TO APPELLANT</sometag>

    sd;kfposdkjfpksdf sdk sd
            ALL THESE WONT BE SCANNED/READ
            SDFKSDPFJSDHF
        OHSFOHSD
</note>

除了我将str转换为二进制类型但仍然不那么困难的部分之外,大多数代码都很容易理解。