我想把2018年的大联盟击球手数据都凑齐。以下是我目前的代码:
#import modules
from urllib.request import urlopen
from lxml import html
#fetch url/html
response = urlopen("https://www.baseball-reference.com/leagues/MLB/2018-standard-batting.shtml")
content = response.read()
tree = html.fromstring( content )
#parse data
comment_html = tree.xpath('//comment()[contains(., "players_standard_batting")]')[0]
comment_html = str(comment_html).replace("-->", "")
comment_html = comment_html.replace("<!--", "")
tree = html.fromstring( comment_html )
for batter_row in tree.xpath('//table[@id="players_standard_batting"]/tbody/tr[contains(@class, "full_table")]'):
csk = batter_row.xpath('./td[@data-stat="player"]/@csk')[0]
当我刮掉所有的面糊,有0.01附加到每个名字。我尝试使用以下代码删除附加号码:
bat_data = [csk]
string = '0.01'
result = []
for x in bat_data :
if string in x:
substring = x.replace(string,'')
if substring != "":
result.append(substring)
else:
result.append(x)
print(result)
此代码删除了号码,但只打印了姓氏:
输出:
['Zunino, Mike']
此外,名称周围还有一个括号和引号。名字的顺序也是相反的。你知道吗
1)如何打印所有击球手的名字?你知道吗
2)如何删除引号和方括号?你知道吗
3)我能把名字的顺序颠倒过来吗?这样名字就可以打印出来,然后再打印姓?你知道吗
我希望最后的结果是所有的击球手都是这样的:迈克·祖尼诺。你知道吗
我是这个网站的新手。。。我也是新的刮/编码,将非常感谢任何帮助我可以得到!=)
1)打印所有击球手姓名
这将打印结果对象中的所有内容。如果它没有打印出你所期望的内容,那么就有别的问题发生了。你知道吗
2)删除引号 括号是因为它是数组对象。试试这个。。。你知道吗
这将告诉解释器在0索引处打印结果。你知道吗
3)姓名的倒序
试试看
你可以用不同的方法做同样的事情。这里有一个这样的方法,它不需要后期处理。你得到你想要的名字:
输出结果如下:
你只得到最后一个击球手,因为你在第一个循环中每次都会覆盖csk的值。首先初始化空列表bat\ U数据,然后将每个BATT添加到其中。你知道吗
这会给你一个所有击球手的列表,
['Abreu,Jose0.01', 'Acuna,Ronald0.01', 'Adam,Jason0.01', ...]
然后循环浏览这个列表,但不必检查名称中是否有
string
。只需执行x.replace('0.01', '')
,然后检查字符串是否为空。你知道吗颠倒名字的顺序
然后将nn附加到结果。你知道吗
你得到的是引号和括号,因为你正在打印列表。而是遍历列表并打印每个项目。你知道吗
您的代码被编辑,假设您正确获得了bat_数据:
相关问题 更多 >
编程相关推荐