在使用scrapy的解析过程中,我找到了这个输出
[u'TARTARINI AUTO SPA(CENTRALINO SELEZIONE PASSANTE)',“[u'VCBONAZZI \ 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
由于
答案 0 :(得分:5)
您看到的额外字符是unicode字符串。如果你正在网上搜索,你会看到很多。常见示例包括版权符号:©unicode point U+00A9
或商标符号™unicode point U+2122
。
删除它们的最快方法是尝试将它们编码为ascii,如果它们不是ascii字符(它们都不是),则将它们抛弃
>>> example = u"Xerox ™ printer"
>>> example
u'Xerox \u2122 printer'
>>> example.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 6: ordinal
not in range(128)
>>> example.encode('ascii', errors='ignore')
'Xerox printer'
>>>
正如您所看到的,当您尝试将符号解码为ascii时,它会引发UnicodeEncodeError
,因为该字符无法在ascii中表示。但是,如果添加errors='ignore'
关键字参数,则只会忽略它无法编码的符号。