从XML-Fi检索Python正则表达式

2024-09-30 10:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在对正则表达式有问题。我试图从XML文件中提取项的名称:https://www.crimezappers.com/rss/catalog/category/cid/97/store_id/1/。我找到了一个方法,但是,它是非常笨拙的,我想知道有没有办法使表达式更小?在

这是我目前拥有的(很长的路):<item>\n<title>\n<!\[CDATA\[ ([A-Za-z].[^\]]+)|<item>\n<title>\n<!\[CDATA\[\n([A-Za-z].[^\]]+)

这是我的尝试:<item>\n<title>\n<!\[CDATA\[|(?\n)| |([A-Za-z].[^\]]+)

Image of what should be found, the blue underline is what should be also found

提前谢谢。在


Tags: 文件https名称comtitlewwwxmlitem
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:12

使用正则表达式来解析xml不是一个好主意。在

使用xml处理库,如^{}

>>> import requests
>>> import lxml.etree
>>> 
>>> r = requests.get('https://www.crimezappers.com/rss/...')
>>> root = lxml.etree.fromstring(r.content)
>>> root.xpath('//item/title/text()')
['Electrical Box HD Hidden Camera with Built in DVR',
 'Mini Clip On Smiley Face Button Spy Hidden Camera with Built in DVR',
 ...]

使用正则表达式更新。在

您可以使用\s匹配任何空格字符(包括换行符\n):

^{pr2}$
  • [A-Za-z].[^\]]+替换为(.*?)\]\]>,以匹配<![CDATA和{}之间的所有内容,不贪婪(?)。在

相关问题 更多 >

    热门问题