Comment faire pour supprimer u" à partir d'un script python?
Je suis en train d'écrire l'analyse de script à l'aide de python/scrapy. Comment puis-je supprimer [] et u' à partir de chaînes de caractères dans le fichier de résultat?
Maintenant, j'ai ce texte:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.utils.markup import remove_tags
from googleparser.items import GoogleparserItem
import sys
class GoogleparserSpider(BaseSpider):
name = "google.com"
allowed_domains = ["google.com"]
start_urls = [
"http://www.google.com/search?q=this+is+first+test&num=20&hl=uk&start=0",
"http://www.google.com/search?q=this+is+second+test&num=20&hl=uk&start=0"
]
def parse(self, response):
print "===START======================================================="
hxs = HtmlXPathSelector(response)
qqq = hxs.select('/html/head/title/text()').extract()
print qqq
print "---DATA--------------------------------------------------------"
sites = hxs.select('/html/body/div[5]/div[3]/div/div/div/ol/li/h3')
i = 1
items = []
for site in sites:
try:
item = GoogleparserItem()
title1 = site.select('a').extract()
title2=str(title1)
title=remove_tags(title2)
link=site.select('a/@href').extract()
item['num'] = i
item['title'] = title
item['link'] = link
i= i+1
items.append(item)
except:
print 'EXCEPTION'
return items
print "===END========================================================="
SPIDER = GoogleparserSpider()
et j'ai des résultat de ce genre, après l'exécution de
python scrapy-ctl.py crawl google.com
2010-07-25 17:44:44+0300 [-] Log opened.
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled extensions: CoreStats, CloseSpider, WebService, TelnetConsole, MemoryUsage
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled scheduler middlewares: DuplicatesFilterMiddleware
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloaderStats, UserAgentMiddleware, RedirectMiddleware, DefaultHeadersMiddleware, CookiesMiddleware, HttpCompressionMiddleware, RetryMiddleware
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled spider middlewares: UrlLengthMiddleware, HttpErrorMiddleware, RefererMiddleware, OffsiteMiddleware, DepthMiddleware
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled item pipelines: CsvWriterPipeline
2010-07-25 17:44:44+0300 [-] scrapy.webservice.WebService starting on 6080
2010-07-25 17:44:44+0300 [-] scrapy.telnet.TelnetConsole starting on 6023
2010-07-25 17:44:44+0300 [google.com] INFO: Spider opened
2010-07-25 17:44:45+0300 [google.com] DEBUG: Crawled (200) <GET http://www.google.com/search?q=this+is+first+test&num=20&hl=uk&start=0> (referer: None)
===START=======================================================
[u'this is first test - \u041f\u043e\u0448\u0443\u043a Google']
---DATA--------------------------------------------------------
2010-07-25 17:52:42+0300 [google.com] DEBUG: Scraped GoogleparserItem(num=1, link=[u'http://www.amazon.com/First-Protector-Small-Tamora-Pierce/dp/0679889175'], title=u"[u'Amazon.com: First Test (Protector of the Small) (9780679889175 ...']") in <http://www.google.com/search?q=this+is+first+test&num=100&hl=uk&start=0>
et ce texte dans le fichier:
1,[u'Amazon.com: First Test (Protector of the Small) (9780679889175 ...'],[u'http://www.amazon.com/First-Protector-Small-Tamora-Pierce/dp/0679889175']
oh, je suis désolé, merci beaucoup. ))
Pour quelqu'un d'autre qui veut enlever le u, je voulais juste vous faire savoir que généralement il n'y a pas une bonne raison de le retirer. Elle marque simplement une chaîne de caractères au format unicode, mais ne fait pas apparaître comme faisant partie de la chaîne lorsque vous traitez. Par exemple, vous pouvez imprimer de la chaîne dans la liste, et vous pouvez voir que le " u " n'apparaît pas.
Pour quelqu'un d'autre qui veut enlever le u, je voulais juste vous faire savoir que généralement il n'y a pas une bonne raison de le retirer. Elle marque simplement une chaîne de caractères au format unicode, mais ne fait pas apparaître comme faisant partie de la chaîne lorsque vous traitez. Par exemple, vous pouvez imprimer de la chaîne dans la liste, et vous pouvez voir que le " u " n'apparaît pas.
OriginalL'auteur Gennadich | 2010-07-25
Vous devez vous connecter pour publier un commentaire.
plus joli -
print qqq.pop()
OriginalL'auteur nazca
Remplacer
print qqq
avecprint qqq[0]
. Vous obtenez ce résultat, parce queqqq
est une liste de.Même problème avec votre fichier texte. Vous disposez d'une liste avec un seul élément que vous avez écrit à la place de l'élément dans la liste.
?? Je n'ai pas downwoted vous. Mais j'ai essayé votre variante et il ne fonctionne pas pour moi. Peut-être que j'ai fait quelque chose de mal. De toute façon, je suis très reconnaissant pour votre aide.
J'ai aussi eu downvoted... magique 🙂
OriginalL'auteur Daniel Egeberg
Il semble que le résultat de
extract
est unlist
. Essayez:OriginalL'auteur Chris B.
Le u devant le code, purement signifie que c'est une chaîne unicode. Voir la référence ici. http://docs.python.org/tutorial/introduction.html#unicode-strings. La solution serait de convertir votre contenu d'une chaîne à l'aide de la str ().
OriginalL'auteur IonicBurger