提取字符串的一部分

时间:2014-03-19 19:49:04

标签: python regex web-scraping scrapy

我正在抓取分类广告网站,并且在字符串的某些部分遇到困难。

该网站的广告采用混合货币,美元和欧元。我以csv格式导出一些数据。到目前为止一直很好,直到我看到这个:

<b>400.00 USD</b>

现在下一个广告:

<b>237.00 euro</b>

另一个:

<b>120.00 $</b>

等等。

这是有效的实际xpath:

item["unitPrice"] = t.xpath('//span[@style="color:red;"]/text()').extract()

,csv中的返回结果为400.00 USD。 我想要做的是提取字符串的第一部分,即400.00或237.00并将它们放在Price列下,并提取字符串的第二部分,即USD或$或Euro。据我所知,它将是具有不同正则表达式的相同xpath。你会推荐什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

使用([0-9\.]+)\s+(.*)$正则表达式来解析价格,例如:

>>> import re
>>> prices = ['400.00 USD', '120.00 $', '237.00 euro']
>>> template = re.compile('^([0-9\.]+)\s+(.*)$')
>>> for price in prices:
...     print template.findall(price)
... 
[('400.00', 'USD')]
[('120.00', '$')]
[('237.00', 'euro')]