提取文本
问题描述:
我有一个<td>
,并希望从中提取文本,这是我需要的只是文本汤姆·克鲁斯,辛普森,比尔·克林顿这是使用一个Python正每个<td>
标签内表达。提取文本
<td class="clic-cul manga" template=".woxColumnyd" maz="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Tom Cruz</td>
<td class="clic-cul manga" template=".woxColumnx" mac="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Home Simpson</td>
<td class="clic-cul manga" template=".woxColumnz" max="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Bill Clinton</td>
任何想法?
更新1.如果HTML解析器是标准方式,我应该怎么做呢?
答
我知道你问了一个只有正则表达式的解决方案,但我希望你可以考虑使用基于lxml的库之一(比如html5lib或BeautifulSoup)来解析无效的HTML并提供访问权限的其他更安全,更快和更简单的方法到lxml树。
随着BeautifulSoup:
html = """
<td class="clic-cul manga" template=".woxColumnyd" maz="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Tom Cruz</td>
<td class="clic-cul manga" template=".woxColumnx" mac="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Home Simpson</td>
<td class="clic-cul manga" template=".woxColumnz" max="/ajax/blac-woxm/xom-line/expanded/2002-2012/11-05-2022/01/fam.json">Bill Clinton</td>
"""
import bs4
doc = bs4.BeautifulSoup(html, 'lxml')
print([el.text for el in doc.find_all('td')])
输出然后
['Tom Cruz', 'Home Simpson', 'Bill Clinton']
答
如果你正在寻找一个班轮regex- >\u+(\s\u+)?</
IF NOT
比方说您将该html存储在名为的文件中。 我不知道python,但我知道红宝石。 也许你可以做点什么。
xfile3=File.open("dat.txt","r") #html stored in dat.txt
i=-2 #Logic here. For iterating i exactly to the position of names in the array
ch= xfile3.read
arr=ch.split(/[<,>]/) #for splitting ch into arr whenever <or> is encountered
while i<=100 # replace 100 to some no as it suits
i=i+4
puts arr[i]
end
[不解析与正则表达式的HTML!(http://stackoverflow.com/a/1732454/418066) – Biffen
的标准方法是使用HTML解析器和不是一个正则表达式 – polku