2

我可以使用 xml.etree.ElementTree 中的 element.findall() 在单个属性中查找具有多个值的元素吗?

我可以使用它来查找所有带有 class="day" 的 div 元素:

from xml.etree.ElementTree import ElementTree

calendar = ElementTree()
calendar.parse("calendar-week.xml")

calendar.findall('.//div[@class="day"]')

或者这个来查找所有具有 class="first day" 的 div 元素:

calendar.findall('.//div[@class="first day"]')

但是有没有办法在他们的班级中找到所有带有“day”的div元素?我找不到任何有关如何执行此操作的文档。有没有办法在这里使用正则表达式?

<body>
   <div class="calendar-week">
      <div class="first day" id="su">Sunday</div>
      <div class="day" id="mo">Monday</div>
      <div class="day" id="tu">Tuesday</div>
      <div class="day" id="we">Wednesday</div>
      <div class="day" id="th">Thursday</div>
      <div class="day" id="fr">Friday</div>
      <div class="last day" id="sa">Saturday</div>
      <div class="clear-float"></div>
   </div><!-- /calendar-week -->
</body>    
4

2 回答 2

1

这个 xpath 是你通常会这样做的方式:

'//div[contains(concat(" ", @class, " "), " day ")]'
于 2012-07-05T19:33:30.040 回答
1

此代码基于@stranac 的答案中提供的 xpath 术语工作

from lxml import etree as ET

calendar = ET.ElementTree()
calendar.parse("calendar-week.xml")

elem_list = calendar.xpath('//div[contains(concat(" ", @class, " "), " day ")]')
于 2012-07-06T04:17:17.890 回答