2016-05-14 44 views
0

我有一个<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解析器是标准方式,我应该怎么做呢?

+3

[不解析与正则表达式的HTML!(http://stackoverflow.com/a/1732454/418066) – Biffen

+3

的标准方法是使用HTML解析器和不是一个正则表达式 – polku

回答

1

我知道你问了一个只有正则表达式的解决方案,但我希望你可以考虑使用基于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'] 
0

如果你正在寻找一个班轮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 

工作证明 PROOF