scrapy python重新声明

时间:2014-01-13 10:13:27

标签: python regex python-2.7 scrapy

我正在学习scrapy。我正在使用scrapy 0.20这就是我遵循本教程的原因。 http://doc.scrapy.org/en/0.20/intro/tutorial.html

我理解了这些概念。但是,我还有一件事。

在本声明中

sel.xpath('//title/text()').re('(\w+):')

输出

[u'Computers', u'Programming', u'Languages', u'Python']

什么是 re('(\ w +):')请使用吗?

帮助回答:

这句话

sel.xpath('//title/text()').extract()

有这个输出:

[u'Open Directory - Computers: Programming: Languages: Python: Books']

为什么在元素之间添加逗号,? 此外,所有':'都被删除。

而且:这是一个python纯语法吗?

2 个答案:

答案 0 :(得分:2)

这是一个正则表达式(正则表达式),它本身就是一个整体世界。

(\ w +):将返回以冒号结尾的任何文本(但不返回冒号) Here is an example of how it works with the ":" getting removed

(\ w +:)将返回以冒号结尾的任何文本(并且还将返回冒号) Here is an example of how it works with the ":" staying in

另外,如果你想了解正则表达式,Codecademy有一个很好的python course

答案 1 :(得分:1)

(\w+):

是一个正则表达式,它匹配任何以:结尾的单词并对所有单词字符组成[a-zA-Z_])。

输出没有:,因为此方法返回所有捕获的组。

结果以Python列表的形式返回。当列表表示为字符串时,元素由,分隔。

\w[a-zA-Z_]

的缩写

引自Python Regular Expressions Page

  

\ W

     

如果未指定LOCALE和UNICODE标志,则匹配any   字母数字字符和下划线;这相当于   设置[a-zA-Z0-9_]。使用LOCALE,它将匹配设置[0-9_]加上   任何字符都被定义为当前的字母数字   语言环境。如果设置了UNICODE,则将匹配字符[0-9_] plus   在Unicode字符中被分类为字母数字的任何内容   属性数据库。