当长度变长时,Python会剪切字符串的特定部分

2024-09-30 14:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python为我的Tennislub开发一个网络爬虫,以便从数据库中的网页保存游戏结果、排名等(然后在我自己的网站上显示)。很好,我有这样的桌子:

enter image description here

然而,有些球队的名字很难在我的网站上很好地输出(特别是当两家俱乐部在一起的时候)

enter image description here

我的问题是:如果一根绳子达到一定长度,比如34,我怎么能用熊猫剪下“/”后面的所有东西

到目前为止,我的代码(以及对爬网信息的其他有效更改):

for x in range(len(teams)):
     driver.get('https://baden.liga.nu/cgi-bin/WebObjects/nuLigaTENDE.woa  
     /wa/teamPortrait?team=' + teams[x][1])
     table_games = driver.page_source

     df = pd.read_html(table_games)[1]

     banned = ['TSG']
     f = lambda x: ' '.join([item for item in x.split() if item not in banned])
     df["Heimmannschaft"] = df["Heimmannschaft"].apply(f)
     df["Gastmannschaft"] = df["Gastmannschaft"].apply(f)


     df = df.rename(columns={'Datum, Uhrzeit.1': 'Termin'})
     df[['Datum', 'Uhrzeit']] = df.Termin.str.split(" ", expand=True, )
     del df['Termin']
     df = df[['Datum', 'Uhrzeit', 'Heimmannschaft', 'Gastmannschaft', 'Matches',                  
     'Spielbericht']]

     df.to_sql(con=con, name=teams[x][0]+'_Spiele', if_exists='replace')



     driver.get('https://baden.liga.nu/cgi-bin/WebObjects/nuLigaTENDE.woa
     /wa/groupPage?targetFed=BAD&championship=B1+S+2021&group=' + teams[x][2])
     table_ranks = driver.page_source

     df = pd.read_html(table_ranks)[0]

     f = lambda x: ' '.join([item for item in x.split() if item not in banned])
     df["Mannschaft"] = df["Mannschaft"].apply(f)

     df.iloc[0:, 1:].to_sql(con=con, name=teams[x][0]+ '_Tabelle', if_exists='replace')

driver.quit()

在我的代码示例中,驱动程序会爬到不同的网站进行排名游戏日,在这两种情况下,一些球队的名字都很长(因此我想删掉第二个球队的名字,从“/”开始)

我希望你能帮我


Tags: indfforif网站drivertableitem
2条回答

由于您提到只有当超过1个团队时,长度才会超过34,因此简单的解决方案是首先检查长度,如果超过34,则在/处执行split并获得第一个团队:

df['your_column'] = df['your_column'].apply(lambda x: x.split('/')[0] if len(x) > 34 else x)

只有在长度大于等于的情况下,您才能拆分并获得一线队;三十四

df['your_column'] = df['your_column'].apply(lambda x: x.split('/')[0] if len(x) > 34 else x)

相关问题 更多 >