无法使用Python beautifulsoup从不需要的字符中清除字符串

时间:2019-03-21 13:40:21

标签: python python-3.x web-scraping beautifulsoup

运行以下命令

prices = [price.text.strip() for price in soup.select('.special-price')]
prices = prices.replace(u'\xa0', u' ')
print(prices)

我得到的“列表”对象没有属性“替换”

我应该放在哪里替换?有什么方法可以一步一步清除它吗?

谢谢

3 个答案:

答案 0 :(得分:1)

是的,因为您使用列表理解功能创建了一个列表

您需要通过prices=''.join(prices)将列表转换为字符串,如果价格未解析为字符串,则假设价格为字符串列表。价格将是一个字符串。现在,您可以调用replace了。

答案 1 :(得分:1)

由于我们无权访问您的示例数据,因此应该这样做:

您需要将replace()放在str而不是list上,例如:

prices = ['1','1','2','3','4','5','1','1','1']
print([x.replace('1', '9') for x in prices])

输出

['9', '9', '2', '3', '4', '5', '9', '9', '9']

答案 2 :(得分:0)

因为'list' object has no attribute 'replace'。那就是为什么。

您正在尝试个别更改价格。字符串具有replace方法,但列表没有。

您应该将替换添加到列表理解中。

prices = [price.text.strip().replace(u'\xa0', u' ') for price in soup.select('.special-price')]
print(prices)