【问题标题】:Extract parts of text (html) file based on characters before & after with python使用python根据前后字符提取部分文本(html)文件
【发布时间】:2021-02-12 18:21:44
【问题描述】:

我正在尝试构建一个脚本,该脚本将从 html 文件中提取特定部分(即链接及其相关描述)并返回每行的结果。

我正在尝试使用 python 中的列表来构建它,但不知何故我犯了一个错误!

这是我到目前为止所做的,但它返回空白我的值列表:


import re

def subtext (data, first_link, last_link, first_descr, last_descr):
    values = []
    
    link = re.search('''"first_link"(.+?)"last_link"''', data)
    values.append(link)
    descr = re.search('''"first_descr"(.+?)"last_descr"''', data)
    values.append(descr)
    while values:
        print(values)


html_file = input ("Type filepath: ")
html_code = open (html_file, "r")
html_data = html_code.read()


subtext (html_data, '''11px;"><a href=''', ''' target="_blank"  ''', '''  title="Relative document">''', '''</a></td><td style="font-''')


html_code.close()

【问题讨论】:

    标签: python search text


    【解决方案1】:

    有一个html parser for python。但是如果你想使用你的代码,那么你需要修复这些错误:

    link = re.search('''"first_link"(.+?)"last_link"''', data)
    values.append(link)
    

    首先,您的正则表达式将搜索字符串“first_link”和“last_link”,而不是函数 args 中的值。使用 .format 创建字符串形式的 args。 同样在上面的代码中link 将是 re.Match 对象,而不是字符串。使用group() 从对象中挑选字符串——只要确保它找到了一些东西。与下一个re.search 相同的故事。

       while values:
          print(values)
    

    在这里,您将进入无限循环的打印。只需执行print(values) 即可,无需任何循环。

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2016-01-21
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 2017-06-27
      • 1970-01-01
      相关资源
      最近更新 更多