我正在抓取分类广告网站,并且在字符串的某些部分遇到困难。
该网站的广告采用混合货币,美元和欧元。我以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。你会推荐什么?
谢谢。
答案 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')]