Kolayca anlayamıyorum!python and scrapy THE kodlama sorunu
Content-Type: text/html;charset=utf-8
Ben XPath seçici ekstresi ile düzenli unicode dizeleri listesini() çağrısı alıyorum:
:(Ben de o ne diyor en azından bir utf-8 kodlu sitesinden veri hurdaya am[u'Westbahnhofstr.\xa010', u'72070\xa0T\xfcbingen']
Şimdi ben unicode dizeye listesine katılın:
Bu listesidir 210
item['city']= "".join(element.select('//div[@id="bubble_2"]/div/text()').extract())
Şimdiye kadar iyi: Ben çıkışına bu unicode dize ya ekrana (baskı) veya dosyaya (yazma) çalışırken
u'Beim Nonnenhaus\xa0672070\xa0T\xfcbingen'
sorun görünür. neyse ben bir hata (http://pastebin.com/51DkX2R2) döndürür deneyin: Bu benim pipeline.py olduğunu
item['city'].encode('utf-8')
ve nasıl açmak için kullanmak ve: Tabii çıktı önce bayt dizeye unicode kodlanmış olan
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 11: ordinal not in range(128)
benim cvs yazabilirsiniz:
012:import csv
import items
import urlparse
import codecs
class DepostPipeline(object):
def __init__(self):
self.modelsCsv = csv.writer(codecs.open('Dees.csv', mode='w',encoding='utf-8'))
self.modelsCsv.writerow(['city'])
def process_item(self, item, spider):
if isinstance(item, items.DetailsItem):
item['city'] = item['city'].encode('utf-8')
self.modelsCsv.writerow([item['city']])
return item
en garip şey benim sistem (pencerelerde piton) kusursuzca unicode dizeleri kolları olmasıdır
C:\Console2>python
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s=u'Beim Nonnenhaus\xa0672070\xa0T\xfcbingen'
>>> print s
Beim Nonnenhaus 672070 Tübingen
Son 10 günde utf-8, unicode, kodlama ve kod çözme hakkında çok şey okudum ama hala burada bir şey özlüyorum gibi görünüyor ?! Herhangi bir yardım veya tavsiyeye minnettarım.
item['city'].encode('utf-8')
Karakter dizileri değişmez ve yerinde kodlanmamış:
Üzgünüm, nedense benim kodundan, yerine zaten olduğunu cevapsız ... Ben yazıyı düzenliyor duyuyorum. Yanıt verdiğiniz için teşekkürler. – mrki
Komple Hata günlüğü: http://pastebin.com/51DkX2R2 – mrki
@mrki: doğru, çünkü 'codecs.open()'; Onu özledim. Bir dahaki sefere, sorunuzdaki traceback de dahil olmak üzere, çok yararlı olacaktır! :-) –