【发布时间】:2014-08-23 14:00:15
【问题描述】:
我有一些代码正在打印列表中的项目,每个项目之间没有空格,并且用逗号分隔它们:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy.item import Item
from scrapy.spider import BaseSpider
import re
import json
class ExampleSpider(CrawlSpider):
name = "goal4"
allowed_domains = ["whoscored.com"]
start_urls = ["http://www.whoscored.com"]
download_delay = 1
rules = [Rule(SgmlLinkExtractor(allow=(''),deny=('/News', '/Fixtures', '/Graphics', '/Articles', '/Live', '/Matches', '/Explanations', '/Glossary', '/Players', 'ContactUs', 'TermsOfUse'),), follow=False, callback='parse_item')]
def parse_item(self, response):
sel = Selector(response)
match1 = re.search(re.escape("DataStore.prime('stage-player-stat', defaultTeamPlayerStatsConfigParams.defaultParams , ") \
+ '(\[.*\])' + re.escape(");"), response.body)
if match1 is not None:
playerdata1 = match1.group(1)
for player in json.loads(playerdata1):
print ("{TeamId},{PlayerId},{Name},{FirstName},{LastName},{TeamName},{PositionText},{PositionLong} \
,{Age} \
,{Height},{Weight},{GameStarted},{SubOn},{SubOff} \
,{Goals},{OwnGoals},{Assists},{Yellow},{SecondYellow},{Red} \
,{TotalShots} \
,{ShotsOnTarget},{ShotsBlocked},{TotalPasses},{AccuratePasses},{KeyPasses} \
,{TotalLongBalls},{AccurateLongBalls},{TotalThroughBalls},{AccurateThroughBalls} \
,{AerialWon},{AerialLost},{TotalTackles},{Interceptions},{Fouls} \
,{Offsides},{OffsidesWon},{TotalClearances},{WasDribbled},{Dribbles} \
,{WasFouled} \
,{Dispossesed},{Turnovers},{TotalCrosses},{AccurateCrosses}".decode().format(**player))
这适用于列表中的元素,直到第一个换行符。这是为了表示代码中的换行符,而不是屏幕上的任何中断。中断后直接打印的所有元素与前一个元素之间有巨大的空间。那些在休息之间的打印很好,直到下一个休息等。
我想知道的是,我怎样才能将这段代码分成多行而不影响打印的显示方式?
谢谢
【问题讨论】:
-
除了 enrico.bacis 的回答,您可以简单地在代码中删除缩进。但是你会牺牲代码的可读性,这通常不是你想要的。 ;)