首页 > 解决方案 > 对 Python 列表中的条目执行多个步骤

问题描述

我尝试从 txt.file 加载列表,然后想对每个条目执行多个任务。不幸的是,这些任务仅在一个条目上执行,而不是全部执行。

我使用此函数从 txt.file 加载列表:

def load_dir_file():
    directory = os.path.dirname(__file__)
    filename = os.path.join(directory, "law_dir")

    with open(filename, "r", encoding="utf-8") as fin:
        dir_file = fin.readlines()
        return dir_file

这是执行这些任务的代码

def create_html():
    dir_lst = load_dir_file()

    for dir_link_dirty in dir_lst:
        dir_link = dir_link_dirty.replace('"',"").replace(",","").replace("\n","")
        dir_link_code = urllib.request.urlopen(dir_link)
        bs_dir_link_code = BeautifulSoup(dir_link_code, "html5lib")
        h2_a_tag = bs_dir_link_code.h2.a
        html_link = str(dir_link) + "/" + str(h2_a_tag["href"])
        print(dir_lst)
        return html_link

文本。文件现在看起来像这样:

"https://www.gesetze-im-internet.de/ao_1977",
"https://www.gesetze-im-internet.de/bbg_2009",
"https://www.gesetze-im-internet.de/bdsg_2018"

我是编程新手,可能在上面的一些非常基本的点上失败了。因此,如果您想添加一些建议,我基本上可以如何改进,我将不胜感激。

标签: python-3.xlistfor-loop

解决方案


根据您上面的评论,听起来您想要返回一个 html 链接列表,而不仅仅是一个。为此,您需要该函数来构建一个列表并让它返回该列表。你有很多事情要做create_html,所以为了说明的目的,我把这个函数分成两个:create_html_link_listcreate_html_link

def create_html_link(dir_link_dirty):
   dir_link = dir_link_dirty.replace('"',"").replace(",","").replace("\n","")
   dir_link_code = urllib.request.urlopen(dir_link)
   bs_dir_link_code = BeautifulSoup(dir_link_code, "html5lib")
   h2_a_tag = bs_dir_link_code.h2.a
   html_link = str(dir_link) + "/" + str(h2_a_tag["href"])

   return html_link

def create_html_link_list():
   dir_lst = load_dir_file()
   html_link_list = [
      create_html_link(dir_link_dirty)
      for dir_link_dirty in dir_lst
   ]

   return html_link_list

推荐阅读