首页 > 解决方案 > Python re.sub 问题

问题描述

我正在尝试清理re.sub用于将文本转换为时间的字符串。我的初始字符串是"Durée : 1h30",我想删除"Durée : "并获得这个输出:"1h30"。但是,使用我当前的代码,输出是这个字符串列表:["D", "u", "r", "é", "e", " ", ":", " ", "1", "h", "3", "0"]

for href in response.xpath("//div[@class='item']/a[@class='roll-2']//@href"):
        url = "https://www.louvre.fr" + href.extract()
        yield scrapy.Request(url, callback=self.parse_dir_contents)

lenght = response.xpath("//tbody/tr/td/text()").extract()[1]  #lenght = "Durée : 1h30"

item['lenght'] = [re.sub("Durée : ", "", le) for le in lenght]

标签: pythonregexstringscrapy

解决方案


字符串在 Python 中是可迭代的,您正在迭代列表理解中的每个字符并re.sub分别在这些字符中运行。

此外,您在这里不需要正则表达式。使用str.replace

item['length'] = [length.replace('Durée : ', '')]

推荐阅读