Как веб-очистить порядок ватина MLB, чтобы преуспеть? - PullRequest
0 голосов
/ 02 сентября 2018

Я скребу бейсбольные команды и импортирую код Python в Excel, используя панд.

Что я ищу:

  1. Удалить кавычки из имен
  2. Снять скобки с начала и конца каждой команды
  3. Разделение имен на разные ячейки

Пример текущего выхода команды 1:

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

Все вышеперечисленные имена имеют кавычки, запятые и скобки. Все они также перечислены в одной ячейке.

Пример предпочтительного вывода Excel для Команды 1:

Daniel Norris    Masahiro Tanaka    Miki Mahtook    etc.

Как вы можете видеть выше, я хотел бы удалить все кавычки, запятые и скобки. Кроме того, я хотел бы, чтобы имена всех игроков каждой команды были в соответствующих ячейках.

Я искал правильный код онлайн. До сих пор я видел три примера на stackoverflow.com, но они выглядят иначе, чем мой. Я покажу все три. Возможно, один из них может быть использован в этом случае.

Пример 1 с использованием строкового метода:

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

Пример 2 с использованием метода замены:

s = s.replace("World", "")

Пример 3 с использованием метода удаления:

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)

Можно ли реализовать один из этих кодов для выполнения трех пунктов, которые я перечислил выше? Если нет, возможно, кто-то может предложить мне некоторое представление о том, как лучше достичь моих целей. Я видел, как некоторые люди онлайн предлагают фильтр регулярных выражений. Я не знаю, как их использовать, хотя. Заранее спасибо за ваше время и усилия!

Кстати, я новичок в кодировании и очистке. Я очень благодарен за любую помощь, которую я могу получить. Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или я могу добавить больше деталей, чтобы помочь вам.

Вот мой код:

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()

1 Ответ

0 голосов
/ 02 сентября 2018

Если вы хотите добиться успеха, я бы порекомендовал использовать файлы CSV (вместо файлов XLSX). Их намного проще в управлении и создании, и вы можете использовать встроенный модуль csv .

Вот пересмотренный пример вашего кода.

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)
...