我使用以下代码从电子商务网站带回价格:
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.我怎么能得到这个?
答案 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+
正则表达式应该可以解决问题。