【问题标题】:How would I remove parts of all list items in Python?如何在 Python 中删除所有列表项的一部分?
【发布时间】:2021-05-30 16:53:27
【问题描述】:

我对 Python 还很陌生,但我想我会尝试一些 HTML 解析。我已经到了我有一个条目列表的地步,但我不知道如何让它们成为我想要的。我的意见是

['<li><span class=\'typeno\'>1.</span><a href="#m3_ds_real_save_file">M3 DS Real Save File</a></li>', '<li><span class=\'typeno\'>2.</span><a href="#incomplete_mario_kart_wii_course">Incomplete Mario Kart Wii Course</a></li>', '<li><span class=\'typeno\'>3.</span><a href="#shared_library_link_file">Shared Library Link File</a></li>', '<li><span class=\'typeno\'>4.</span><a href="#hacha_split_archive_file">Hacha Split Archive File</a></li>']

我希望我的输出是

1. M3 DS Real Save File 2. Incomplete Mario Kart Wii Course 3. Shared Library Link File 4. Hacha Split Archive File

我的问题是我找不到一种方法来执行正则表达式或类似的方法来以我想要的方式影响 HTML,同时也单独影响列表中的每个项目。还应注意,这些条目会更改,因此我无法对更改进行硬编码。我该怎么做?蒂亚!

【问题讨论】:

  • 我建议你查找 BeautifulSoup 来做这种工作。
  • 请显示您的代码,您可能不需要这里的正则表达式,使用BeautifulSoup 库从li 项目中获取文本,同时对其进行迭代。
  • 我们不应该添加“我也是”cmets,但您应该注意上述建议。 HTML 页面往往会随着时间的推移发生巨大变化,而正则表达式远没有足够灵活来处理变化。使用像 BeautifulSoup 这样的 HTML 解析器。
  • @TimRoberts 在此之前我从未发现需要它,但它看起来对 HTML 解析非常有用。我也会检查一下我的其他代码,谢谢!

标签: python python-3.x regex list


【解决方案1】:

如前所述,您需要BeautifulSoup

from bs4 import BeautifulSoup

data = ['<li><span class=\'typeno\'>1.</span><a href="#m3_ds_real_save_file">M3 DS Real Save File</a></li>', '<li><span class=\'typeno\'>2.</span><a href="#incomplete_mario_kart_wii_course">Incomplete Mario Kart Wii Course</a></li>', '<li><span class=\'typeno\'>3.</span><a href="#shared_library_link_file">Shared Library Link File</a></li>', '<li><span class=\'typeno\'>4.</span><a href="#hacha_split_archive_file">Hacha Split Archive File</a></li>']
html =  ''.join([str(elem) for elem in data]) # turn data into a single html string for BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
result = [i.text.strip() for i in soup.find_all("li")]

输出result:

['1.M3 DS Real Save File', '2.Incomplete Mario Kart Wii Course', '3.Shared Library Link File', '4.Hacha Split Archive File']

如果您的 html 中没有其他列表,您可以直接将 html 输入到BeautifulSoup(html, 'html.parser'),无需任何预处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2021-01-21
    • 2021-12-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多