我有字符串:
<td class="cspan">Proximates</td>\n\t<td style="text-align:left">Total lipid (fat)\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>g</td>\n\t\t\n\t\t\t<td style="text-align:right;">78.30</td>
我需要一个正则表达式。我尝试了很多像这样的人:
Total lipid\(fat\)\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>g\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>
我还有另一个字符串:
<td style="text-align:left">Vitamin C, total ascorbic acid\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>mg</td>\n\t\t\n\t\t\t<td style="text-align:right;">0.0</td>
我尝试了许多正则表达式,也就是:
Vitamin C\, total ascorbic acid\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>mg\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>
我的第三个字符串是:
<td style="text-align:left">Vitamin B-12\n\t\t\n\t\t\n\t\t</td>\n\t\t\n\t\t<td>\xb5g</td>\n\t\t\n\t\t\t<td style="text-align:right;">0.07</td>
我已经尝试过这样一个,更像是这样:
data = re.search('Vitamin B\-12\\n\\t\\t\\n\\t\\t\\n\\t\\t\<\/td\>\\n\\t\\t\\n\\t\\t\<td\>µg\<\/td\>\\n\\t\\t\\n\\t\\t\\t\<td style\=\"text\-align\:right\;\"\>(.*?)\<\/td\>',tb)
从这些字符串我试图得到的数据是:
我需要正则表达式,就像我上面写的只做了一些小改动,因为我知道我错过了什么
答案 0 :(得分:3)
正如您所发现的,XML(HTML)和正则表达式混合不好。但是,使用BeautifulSoup:
时,这个问题非常简单<强>代码:强>
soup = BeautifulSoup(row)
print soup.findAll('td')[-1].text
测试代码:
data = (
"""
<td class="cspan">Proximates</td>
<td style="text-align:left">Total lipid (fat)
</td>
<td>g</td>
<td style="text-align:right;">78.30</td>
""",
"""
<td style="text-align:left">Vitamin C, total ascorbic acid
</td>
<td>mg</td>
<td style="text-align:right;">0.0</td> "
""",
"""
<td style="text-align:left">Vitamin B-12
</td>
<td>\xb5g</td>
<td style="text-align:right;">0.07</td> "
""",
)
from bs4 import BeautifulSoup
for row in data:
soup = BeautifulSoup(row)
print soup.findAll('td')[-1].text
<强>结果:强>
78.30
0.0
0.07