-
-
Save fmasanori/1288160dad16cc473a53 to your computer and use it in GitHub Desktop.
import requests | |
jogos = requests.get('http://worldcup.sfg.io/matches').json() | |
for jogo in jogos: | |
if jogo['status'] in ('completed', 'in progress'): | |
print (jogo['home_team']['country'], jogo['home_team']['goals'], 'x', | |
jogo['away_team']['country'], jogo['away_team']['goals']) |
Isn't it request.urlopen
instead of urllib.request.urlopen
?
Eu mudei um pouco o Script por causa do request.urlopen.
! /usr/bin/env python
import urllib2
import json
resp = urllib2.urlopen('http://worldcup.sfg.io/matches').read()
for jogo in json.loads(resp.decode('utf-8')):
if jogo['status'] == 'completed':
print (jogo['home_team']['country'], jogo['home_team']['goals'], 'x', jogo['away_team']['country'], jogo['away_team']['goals'])
Nao funciona em Python 2.x ????
@itjp
da sim
from urllib2 import urlopen
import json
[jogo for jogo in json.loads(fd.decode('utf-8')) if jogo['status'] == 'completed']
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
vlw professor ;)
@itjp
esto funciona en python 2.7 si tiene Requests, si no, hace pip install requests
import requests
resp = requests.get('http://worldcup.sfg.io/matches')
for jogo in resp.json():
if jogo['status'] == 'completed':
print jogo['home_team']['country'], jogo['home_team']['goals'], 'x', jogo['away_team']['country'], jogo['away_team']['goals']
from __future__ import unicode_literals
try:
import requests
except ImportError:
import json
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
get = lambda u: json.loads(urlopen(u).read().decode('utf-8'))
else:
get = lambda u: requests.get(u).json()
data = get('http://worldcup.sfg.io/matches')
width = max(len(x['home_team']['country'])
for x in data if x['status'] == 'completed')
for jogo in data:
if jogo['status'] == 'completed':
home = jogo['home_team']
away = jogo['away_team']
print('{:>{}} {} x {} {}'.format(
home['country'], width, home['goals'],
away['goals'], away['country']))
I was bored :/
you could actually avoid decoding the response as utf-8 by using the requests module (which is an incredible wrapper around the lacking urllib module). It will identify the encoding for you using chardet and will automatically decode response contents.
Managed it in 4 lines :)
import requests
req = requests.get('http://worldcup.sfg.io/matches')
for match in [m for m in req.json() if m['status'] == 'completed']:
print match['home_team']['country'], match['home_team']['goals'], 'v', match['away_team']['country'], match['away_team']['goals']
@dhagrow Nice!
@eduardo-matos Python2 vs Python3 https://docs.python.org/2/library/urllib.html
1-liner in python2.7 if you don't count imports. Mind the ugliness.
import urllib2, json
print '\n'.join([' '.join((jogo['home_team']['country'], str(jogo['home_team']['goals']), 'x', jogo['away_team']['country'], str(jogo['away_team']['goals']))) for jogo in json.loads(urllib2.urlopen('http://worldcup.sfg.io/matches').read().decode('utf-8')) if jogo['status'] == 'completed'])
I like the competition that has started over fewest lines of code
@ThaWeatherman
Always. If you post a "x lines" titled post, people will try to come up with a shorter version. Wait for the ruby samples to come :)
But let's all remember that in Python, readability is more important than concision. If you want to keep it small, readable and PEP8, you should not try to compress more than :
import json
import urllib.request as req
res = req.urlopen('http://worldcup.sfg.io/matches').read().decode('utf-8')
for m in filter(lambda d: d['status'] == 'completed', json.loads(res)):
template = "{h[country]} {h[goals]} x {a[country]} {a[goals]}"
print(template.format(h=m['home_team'], a=m['away_team']))
Note the 80 char limits. More lines, but way more readable.
You can always make any Python code fits on one line, either with exec() + and or ;. But what's the point ?
And with requests :
import requests
r = requests.get('http://worldcup.sfg.io/matches').json()
m = ((m['home_team'], m['away_team']) for m in r if m['status'] == 'completed')
for h, a in m:
print(h['country'], h['goals'], 'x', a['country'], a['goals'])
And even like that, it's rather add some lines to have decent variables names.
Otherwise, it's not Python code, anymore, it's perl.
Here's my take on the world cup:
if worldcup:
pass
But nice code anyways. ;)
^ Lmao
World cup in six lines. Wait, six lines? Brazil confirmed!
@XenGi cool code
@dhagrow Marvin hitchhiker's guide to the galaxy "I was bored :/"
alunos do Python para zumbis na área akkakakaka.
from urllib import request
import json
resp = request.urlopen('http://worldcup.sfg.io/matches').read()
for jogo in json.loads(resp.decode('utf-8')):
if jogo['status'] == 'completed':
hora = jogo['datetime']
print (jogo['location'],(hora[0:10], hora[11:16]))
print ("Vencedor:", jogo['winner'])
print (jogo['home_team']['country'], jogo['home_team']['goals'], 'x', jogo['away_team']['country'], jogo['away_team']['goals'],"\n")
sair = str(input("Precione ENTER para sair"))
Awesome!
No meu Python so rodou assim (dei um espaço na terceira linha):
import urllib.request
import json
resp = urllib.request.urlopen ('http://worldcup.sfg.io/matches').read()
for jogo in json.loads(resp.decode('utf-8')):
if jogo['status'] == 'completed':
print (jogo['home_team']['country'], jogo['home_team']['goals'], 'x', jogo['away_team']['country'], jogo['away_team']['goals'])
Amazing! :)