【发布时间】:2012-05-02 01:22:41
【问题描述】:
在使用scrapy的解析过程中,我发现了这个输出
[u'TARTARINI AUTO SPA (CENTRALINO SELEZIONE PASSANTE)'],"[u'V. C.BONAZZI\xa043', u'40013', u'CASTEL MAGGIORE']",[u'0516322411'],[u' info@tartariniauto.it'],[u'CARS (LPG INSTALLERS)'],[u'track.aspx?id=0&url=http://www.tartariniauto.it']
如您所见,还有一些额外的字符,例如
你'\xa043“'[]
我不想要的。 我怎样才能删除这些? 此外,此字符串中有 5 个项目。我希望字符串看起来像这样:
item1、item2、item3、item4、item5
这是我的 pipelines.py 代码
from scrapy.contrib.loader import ItemLoader
from scrapy.contrib.loader.processor import TakeFirst, MapCompose, Join
import re
import json
import csv
class InfobelPipeline(object):
def __init__(self):
self.file = csv.writer(open('items.csv','wb'))
def process_item(self, item, spider):
name = item['name']
address = item['address']
phone = item['phone']
email = item['email']
category = item['category']
website = item['website']
self.file.writerow((name,address,phone,email,category,website))
return item
谢谢
【问题讨论】:
-
只需遍历您的字符串并删除 A)当您
str()它时会引发错误的每个字符或 B)高于某个序数的每个字符。 -
@JoelCornett 非常不符合 Python 风格
-
我担心你在问如何删除方括号和引号之类的东西?也就是说,您是在询问如何从其封装列表中删除字符串,或者您已将它们输出到外部文件并重新读取它们?在我看来,所有这些工作都应该在你的项目加载器中完成,而不是在你的管道中。
-
@Edwardr:那么你建议应该怎么做呢?我保证您提出的任何解决方案都将涉及我刚才提到的内容。它是或不是pythonic的程度仅取决于用于执行此操作的内置函数的组合。
-
@JoelCornett 抱歉,我不是说非常。我的意思是 - 为什么在
"data".encode('ascii', error='ignore')可以添加额外的循环?