Python 从响应文本中筛选行
我想从myText中过滤掉部分文本。假设我的文本是Python 从响应文本中筛选行,python,Python,我想从myText中过滤掉部分文本。假设我的文本是 > r=request.get(myHttp) > myText=r.text > >一号线 Wanter二号线 非中心线 请选这条线 与donet Pick不匹配 再选一行 > >我最喜欢的颜色是蓝红色 > > 我想过滤掉一些字符串 “之间的所有行都匹配”和“”之间的行 “”后面的两行 将有多行可供选择 预期产出为 一号线 Wanter二号线 请选这条线 还有一行要选 您可以尝试使用lxml和xpath > &
> r=request.get(myHttp)
> myText=r.text
>
>一号线
Wanter二号线
非中心线
请选这条线
与donet Pick不匹配
再选一行
>
>我最喜欢的颜色是蓝红色
>
>
我想过滤掉一些字符串
“之间的所有行都匹配
”和“
”之间的行
“
”后面的两行
将有多行可供选择
预期产出为
- 一号线
- Wanter二号线
- 请选这条线
- 还有一行要选
> <html> <body>
> <h1>WantedLIne number one
Wanter Line Number TWO
UnWanter Line </h1>
<p> Match Pick This Line Please.</p>
<p> Does Not Match donet Pick </p>
<p>Match One More Line to Pick</p>
>
> <p>My favorite color is <del>blue</del> red.</p>
>
> </body> </html>
从lxml导入etree#您可能需要pip安装lxml
html=“”
tree=etree.HTML(HTML)
p_nodes_target=tree.xpath(//p[以(normalize space(text()),'Match')]开头)
第一个\u p\u值=“如果p\u节点\u目标为None或len(p\u节点\u目标)==0,否则p\u节点\u目标[0]。文本
第一个_p_值的值应为-匹配请选择此行。然后可以用空文本替换“匹配”
事实上,对于您提供的HTML代码,正则表达式也可以工作,但对于更复杂的HTML页面,XPath更好
学习XPath:请从下一步重复。这不是一个可以发布问题并返回工作代码的站点。谢谢,这需要在“”之后的两行代码吗?有时文本不是HTML,如果响应是LogFiles或JSON,希望etree.HTML会有所帮助
from lxml import etree # you may need to pip install lxml
html = "<the content of your HTML>"
tree = etree.HTML(html)
p_nodes_target = tree.xpath("//p[starts-with(normalize-space(text()),'Match')]")
first_p_value = "" if p_node_target is None or len(p_node_target) == 0 else p_nodes_target[0].text