根据位置筛选字符串成列表 - Python

2024-10-02 22:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,这是我的字符串:

myString = "<html><body><p>Hello World!</p><p>Hello Dennis!</p></body></html>"

我想要达到的是:

myList = ['Hello World!','Hello Dennis!']

使用正则表达式或其他方法,如何从myString中过滤出段落文本,同时忽略html标记以实现myList?你知道吗

我试过:

import re
a="<body><p>Hello world!</p><p>Hello Denniss!</p></body>"
result=re.search('<p>(.*)</p>', a)
print result.group(1)

结果是:Hello world!</p><p>Hello Denniss!当我尝试(.*)(.*)时,我得到了Hello World!

这个字符串只是一个例子。字符串也可能是<garbage>abcdefghijk<gar<bage>,这取决于web开发人员如何对网站进行编码。你知道吗

这可能是一个复杂的正则表达式,但我需要学习这一点,因为这是我今年晚些时候将参加的一个网络安全竞赛,我认为我的最佳选择是开发一个算法,搜索a >和a <之间的文本。你知道吗

我该怎么办?你知道吗

抱歉,如果我的问题格式不正确,我有一点学习问题。你知道吗


Tags: 方法字符串文本rehelloworldhtmlbody
2条回答

使用regex解析HTML肯定是limited,但是如果您想获得真正的HTML挖掘解决方案,请尝试查看这个插件BeautifulSoup。你知道吗

至于regex,asterisk量词是贪心的,它会一直吃到</p>的最后一个。所以,您应该使用(?=XXX)命令,这意味着搜索直到XXX找到。你知道吗

请尝试以下操作: 你知道吗

re.findall(r'<p>(.*?)(?=</p>)', s)

是否要删除html文本中的所有标记?我不会选择正则表达式,最好选择另一种方法,例如使用BeautifulSoup,你会在那次黑客会议上大吃一惊:

from bs4 import BeautifulSoup

myString = "<html><body><p>Hello World!</p><p>Hello Dennis!</p></body></html>"

myList = list(BeautifulSoup(myString).strings))

它产生:

['Hello World!', 'Hello Dennis!']

相关问题 更多 >