【发布时间】:2019-10-06 23:23:37
【问题描述】:
我需要创建一个 Python 程序,该程序从标准输入接收 HTML 文件,并使用 regext 将显示在 Mammals 下的物种名称逐行输出到标准输出。我也不需要输出显示为“#sequence_only”的项目。
用于标准输入的文件是这样的:
<!DOCTYPE html>
<!-- The following setting enables collapsible lists -->
<p>
<a href="#human">Human</a></p>
<p class="collapse-section">
<a class="collapsed collapse-toggle" data-toggle="collapse"
href=#mammals>Mammals</a>
<div class="collapse" id="mammals">
<ul>
<li><a href="#alpaca">Alpaca</a>
<li><a href="#armadillo">Armadillo</a>
<li><a href="#sequence_only">Armadillo</a> (sequence only)
<li><a href="#baboon">Baboon</a>
<li><a href="#bison">Bison</a>
<li><a href="#bonobo">Bonobo</a>
<li><a href="#brown_kiwi">Brown kiwi</a>
<li><a href="#bushbaby">Bushbaby</a>
<li><a href="#sequence_only">Bushbaby</a> (sequence only)
<li><a href="#cat">Cat</a>
<li><a href="#chimp">Chimpanzee</a>
<li><a href="#chinese_hamster">Chinese hamster</a>
<li><a href="#chinese_pangolin">Chinese pangolin</a>
<li><a href="#cow">Cow</a>
<li><a href="#crab-eating_macaque">Crab-eating_macaque</a>
<div class="gbFooterCopyright">
© 2017 The Regents of the University of California. All
Rights Reserved.
<br>
<a href="https://genome.ucsc.edu/conditions.html">Conditions of
Use</a>
</div>
我的逻辑如下。我想解析href的值。如果该行以
我尝试创建用于提取哺乳动物名称的正则表达式。
#!usr/bin/env python3
import sys
import re
html = sys.stdin.readlines()
for line in html:
mammal_name = re.search(r'\"\>(.*?)\<', line)
if mammal_name:
print(mammal_name.group())
我想要这样的输出:
Alpaca
Armadillo
Baboon
我得到如下输出:
">Human<
">Alpaca<
">Armadillo<
">Armadillo<
">Baboon<
我不希望 Human 出现在输出中,因为它所在的行不以 开头。此外,我不希望在我的输出中重复,但为此我需要访问 href 的值,但我正在努力解决这部分问题。
更新:我的评分员向我显示这样的消息:“如果您在标签中包含物种名称,它将在许多浏览器中以斜体显示,所以想要以斜体显示科学名称的工作人员可能使用了标签。无论如何,它作为物种名称不合适,所以请删除它“。我猜它是关于 >(species name)
【问题讨论】:
-
不要使用正则表达式stackoverflow.com/questions/1732348/…解析HTML
-
我已经阅读了这篇文章,但我需要使用正则表达式来完成我的作业。
-
为什么你的班级教你用正则表达式解析 HTML??
-
@DariObukhova,看看我的回答,应该对你有帮助。
-
@Olvin Rogth,非常感谢!此外,就我在提取物种名称之前从我的分级员那里得到的信息而言,我需要将它们之间的 >