使用strip()删除空格

时间:2013-08-28 05:57:44

标签: python scrapy

如何删除[u'\n\n\n result here \n\n\n'] 得到的结果只有[u'result here'] ...我正在使用scrapy

def parse_items(self, response):
  str = ""
  hxs = HtmlXPathSelector(response)

  for titles in titles:
      item = CraigslistSampleItem()
      item ["job_id"] = (id.select('text()').extract() #ok
      items.append(item)
  return(items)
end

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

id.select('text()').extract() 

返回包含文本的字符串列表。您应该遍历该列表以去除每个项目或使用切片,例如your_list [0] .strip()来执行条带化空格。 Strip方法实际上与字符串数据类型相关联。

def parse_items(self, response):
  str = ""
  hxs = HtmlXPathSelector(response)

  for titles in titles:
      item = CraigslistSampleItem()
      item ["job_id"] = id.select('text()').extract()[0].strip() #this should work if #there is some string data available. otherwise it will give an index out of range error.
      items.append(item)
  return(items)
end

答案 1 :(得分:2)

使用Python .strip()

的替代方法

您可以在选择“job_id”的XPath表达式周围使用XPath函数normalize-space()

def parse_items(self, response):
    hxs = HtmlXPathSelector(response)

    for titles in titles:
        item = CraigslistSampleItem()
        item ["job_id"] = title.select('normalize-space(.//td[@scope="row"])').extract()[0].strip()
        items.append(item)
    return(items)

注1 :我使用的XPath表达式基于https://careers-cooperhealth.icims.com/jobs/search?ss=1&searchLocation=&searchCategory=&hashed=0

使用.strip() 的答案注2:使用id.select('text()').extract()[0].strip()获得u'result here',而不是列表。

这可能就是您所需要的,但是如果您想要保留列表,就像您要求删除[u'\n\n\n result here \n\n\n']并获得[u'result here'] 的结果一样,你可以使用Python的map()

来使用这样的东西
item ["job_id"] = map(unicode.strip, id.select('text()').extract())