【问题标题】:Repeating delimiters and extracting the string between those重复分隔符并提取它们之间的字符串
【发布时间】:2019-12-02 02:07:44
【问题描述】:

我对 Python 和正则表达式相当陌生,并且希望从 html 文件中提取信息。

假设下面是 html 文件中给出的一行(因为 html 没有“看到”空格,所以我们的示例在同一行)

<td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)> ALSO_EXTRACT_THIS </td>

在我当前的代码中:

with open(myInput, 'r') as inputFile:
    for line in inputFile:
        line = line.strip()

        if line != '':

            m = re.findall('<td.*>(.*?)</td>', line)
            if m:
                #strip() again
                print(m)

这只会打印:

['ALSO_EXTRACT_THIS']

而不是我想要的

['EXTRACT_THIS', 'ALSO_EXTRACT_THIS']

我做错了什么吗?我已经研究过了,这似乎是一种使用重复分隔符提取多个子字符串的方法。

【问题讨论】:

  • 不完全符合您的要求,但 Regex 不是从 HTML 中提取的最佳工具。
  • 嗯,我想提取 和 之间的信息,我将使用它打印到另一个文件,当然通过使用 for-loop 去通过创建的列表。

标签: python html substring text-extraction


【解决方案1】:

这是因为&lt;td.*&gt; 将匹配最长的字符串,即&lt;td (some possible parameters)&gt; EXTRACT_THIS &lt;/td&gt; &lt;td (some possible parameters)&gt;

您也应该对 &lt;td&gt; 使用非贪婪量词:

'<td.*?>(.*?)</td>'

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2015-08-01
    • 2016-02-10
    • 2016-09-05
    相关资源
    最近更新 更多