我有一个由元素组成的字符串。每个元素都可以包含" pear"或" apple"。我可以使用以下方法获取所有元素:
<td width="200">
<?
$sql = "select * from cust_order where firstname = '$firstname' AND lastname = '$lastname' AND order_status = 'review'";
$SQLResult = mysql_query("$sql", $DBcon_MySQL);
while($row = mysql_fetch_array($SQLResult )) {
//$result;
foreach($row as $row ){
//$result="";
$result = "Warning!";
}
?>
<p><? echo $result;?></p>
<?} ?>
</td>
但是,我想获得包含pear的最后一个元素。最简单/最快捷的方法是什么?这是一个好方法:
<td width="200">
<?
$sql = "select * from cust_order where firstname = '$firstname' AND lastname = '$lastname' AND order_status = 'review'";
$SQLResult = mysql_query("$sql", $DBcon_MySQL);
while($row = mysql_fetch_array($SQLResult )) {
//$result;
foreach($row as $row ){
//$result="";
$result = "Warning!";
}
?>
<p><? echo $result;?></p>
<?} ?>
</td>
或者我应该使用解析器吗?
答案 0 :(得分:1)
使用解析器,即BeautifulSoup
代替:
import re
from bs4 import BeautifulSoup
s = '<tag>uTSqUYRR8gapple</tag><tag>K9VGTZM3h8</tag><tag>pearTYysnMXMUc</tag><tag>udv5NZQdpzpearz5a4oS85mD</tag>'
soup = BeautifulSoup(s, "html5lib")
tags = soup.find_all(text=re.compile(r'pear'))
print tags
# [u'pearTYysnMXMUc', u'udv5NZQdpzpearz5a4oS85mD']
设置dom并查找文本与正则表达式pear
匹配的所有标记(从字面上查找“梨”)。
请参阅a demo on ideone.com。
答案 1 :(得分:0)
使用适当的XML库可以使用XPath封装查询。例如:
s = '<root><tag>uTSqUYRR8gapple</tag><tag>K9VGTZM3h8</tag><tag>pearTYysnMXMUc</tag><tag>udv5NZQdpzpearz5a4oS85mD</tag></root>'
import lxml.etree
root = lxml.etree.fromstring(s)
result = root.xpath('//tag[contains(., "pear")][last()]/text()')
...对于给定的输入数据,result
将包含['udv5NZQdpzpearz5a4oS85mD']
。DROP TABLE tab_customerxml;
。在这种情况下,您不需要在自己的代码中搜索最后一项,但可以依赖XPath引擎(在C中实现,作为libxml的一部分)来为您执行此操作。