在我只想要数字时获取斜线和字母

时间:2017-12-16 10:53:05

标签: python scrapy

我使用以下代码从电子商务网站带回价格:

response.css('div.price.regularPrice::text').extract() 

但得到以下结果:

'\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t',
 '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t',

我不想要斜杠和字母,只需要数字5.我怎么能得到这个?

2 个答案:

答案 0 :(得分:2)

首先,您可以使用strip()删除标签"\t"并输入"\n"

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t',
        '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t']

data = [item.strip() for item in data]

你得到了

['Dhs 5.00', '']

接下来,您可以使用if跳过空元素

data = [item for item in data if item]

你得到了

['Dhs 5.00']

如果项目始终具有相同的结构Dns XXX.00
然后,您可以使用切片[4:-3]删除"Dhs "".00"

data = [item[4:-3] for item in data]

你得到了

['5']

所以现在你必须得到第一个元素data[0]来获得5 如果需要,可以使用"5"

将字符串5转换为整数int()
result = int(data[0])

你甚至可以将所有内容放在一行

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t',
        '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t']

data = [item.strip()[4:-3] for item in data if item.strip()]

result = int(data[0])

如果您始终只需要列表中的第一个元素,那么您可以编写它

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t',
        '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t']

result = int( data[0].strip()[4:-3] )

答案 1 :(得分:0)

使用正则表达式仅获取数字。

\d+正则表达式应该可以解决问题。