Cum de web racla MLB scopul de a excela la bataie?

voturi
0

Sunt răzuire liste de jucători de baseball și importarea codul piton în Excel folosind ursi panda.

Ce caut:

  1. Eliminați ghilimele de la nume
  2. Eliminați paranteze de la începutul și la sfârșitul fiecărei echipe
  3. Numele Scindare în celule diferite

Exemplu de curent de ieșire pentru Team 1:

['Daniel Norris', 'Masahiro Tanaka', 'Mikie Mahtook', etc.]

Toate denumirile de mai sus au între ghilimele, virgule și paranteze atașate acestora. Toate acestea sunt enumerate în aceeași celulă, de asemenea.

Exemplu de ieșire Excel preferat pentru Echipa 1:

Daniel Norris    Masahiro Tanaka    Miki Mahtook    etc.

După cum se poate vedea mai sus, aș dori toate ghilimelele, virgule și paranteze eliminate. De asemenea, aș dori toți jucătorii numele din fiecare echipă să fie în propriile lor celule respective.

Am fost în căutarea pentru codul de dreapta on-line. Până în prezent, am văzut trei exemple pe stackoverflow.com, dar ele arata diferit decat a mea. Voi arăta toate trei. Poate unul dintre acestea pot fi utilizate în acest caz.

Exemplul 1 folosind metoda string:

s = s.strip(['o','1'])

Exemplul 2 utilizând metoda înlocui:

s = s.replace(World, )

Exemplul 3 folosind metoda elimina:

x = [1,2,3,4,2,2,3]
def remove_values_from_list(the_list, val):
    for i in range(the_list.count(val)):
        the_list.remove(val)

remove_values_from_list(x, 2)

print(x)

Este posibil să se pună în aplicare unul dintre aceste coduri pentru a face cele trei elemente am enumerate mai sus? Dacă nu, poate că cineva mi poate oferi o perspectivă cu privire la modul de a realiza mai bine obiectivele mele. Am văzut niște oameni online, sugerează un filtru regex. Nu sunt conștient de modul de utilizare a acestora, totuși. Multumesc anticipat pentru timpul și efortul!

Apropo, eu sunt de brand nou la codificare și răzuire. Sunt foarte recunoscător pentru orice ajutor pe care le pot primi. Vă rog să-mi spuneți dacă aveți întrebări sau dacă pot adăuga mai multe detalii pentru a vă ajuta mai bine.

Aici este codul meu de până acum:

from bs4 import BeautifulSoup
import requests
import pandas as pd

url = 'http://www.baseballpress.com/lineups'

soup = BeautifulSoup(requests.get(url).text, 'html.parser')

all_games = []

for g in soup.find_all(class_=game):
    players = g.find_all('a', class_='player-link')
    game = {
        'players': [_.text for _ in g.find_all('a', class_='player-link')],
    }
    all_games.append(game)

print(all_games) 

df = pd.DataFrame.from_dict(all_games)
writer = pd.ExcelWriter('batting lineup.xlsx')
df.to_excel(writer, 'baseball_sheet')
writer.save()
Întrebat 02/09/2018 la 05:28
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Dacă doriți să racla să exceleze aș recomanda să utilizați fișiere CSV ( în loc de cele XLSX). Ele sunt mult mai ușor de gestionat și de a genera și de a face acest lucru, puteți utiliza fișierul CSV built-in modul.

Aici este un eșantion revizuit de cod.

from bs4 import BeautifulSoup
import requests
import csv

url = 'http://www.baseballpress.com/lineups'

soup = BeautifulSoup(requests.get(url).text, 'html.parser')

all_games = []

for g in soup.find_all(class_="game"):
    players = g.find_all('a', class_='player-link')
    game = [_.text for _ in g.find_all('a', class_='player-link')]
    all_games.append(game)

with open('players.csv', 'w', newline='') as csvfile:
    player_writer = csv.writer(csvfile)
    player_writer.writerows(all_games)
Publicat 02/09/2018 la 08:21
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more