Как я могу удалить escape-символы из json в scrapy?

#json #python-3.x #scrapy

#json #python-3.x #scrapy

Вопрос:

У меня есть файл json, в котором в некотором поле json есть escape-символы, так как я могу удалить escape-символы, вот как выглядят мои json-данные:

 {"url": "www.expamle/com", "name": "nttttttHisense 49" FHD TV 49B5200PT 49B5200PT", "price": 
"R5,499.00", "brand": "nttttttHisense"}
  

вот мой метод синтаксического анализа python:

     def parse(self, response):
    for tv in response.xpath(".//div[@class='product-tile-inner']"):
        yield{
            'url' : tv.xpath(".//a[@class='product-tile-inner__img js- 
      gtmProductLinkClickEvent']/@href").get(),
            'name' : tv.xpath(".//a[@class='product-tile-inner__img js- 
      gtmProductLinkClickEvent']/@title").get(),
            'price' : tv.xpath(".//p[@class='col-xs-12 price ONPROMOTION']/text()").get(),
            'img' : tv.xpath(".//a[@class='product-tile-inner__img js- 
         gtmProductLinkClickEvent']//@src").get()


       }
  

Комментарии:

1. Просто используйте json.loads() для обработки вашего JSON

2. Вы не хотите использовать регулярное выражение re ?

Ответ №1:

Вам нужны strip() поля, содержащие пробелы:

 def parse(self, response):
    for tv in response.xpath(".//div[@class='product-tile-inner']"):
        url = tv.xpath(".//a[@class='product-tile-inner__img js-tmProductLinkClickEvent']/@href").get()
        name = tv.xpath(".//a[@class='product-tile-inner__img js-gtmProductLinkClickEvent']/@title").get()
        price = tv.xpath(".//p[@class='col-xs-12 price ONPROMOTION']/text()").get()
        img = tv.xpath(".//a[@class='product-tile-inner__img js-gtmProductLinkClickEvent']//@src").get()
        yield {
            'url': url.strip() if url else url,
            'name': name.strip() if name else name,
            'price': price.strip() if price else price,
            'img': img.strip() if img else img
        }