从变量Python中提取字符串

2024-05-18 05:12:43 发布

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

在对一个解析过的url执行''.join(soup.findAll(text=True))操作后,我将类似这样的内容存储在一个变量中,我必须根据给定的参数获取学校和分数以及与谁一起玩。test.py "norfolk st."应该获取分数,如“Norfolk St.0-38 Rutgers”…我尝试使用了几个函数,如搜索(),字符串。查找()并分析无法获取预期结果的字符?需要帮助吗

Norfolk St. 


0 - 38




    Rutgers 
    Final


     South Florida 


    6 - 21


     Michigan St. 
    Final


     Chowan 


    7 - 47


     Charlotte 
    Final


     SE Louisiana 


    17 - 38


     (24) TCU 
    Final


     W. Kentucky 


    20 - 52


     Tennessee 
    Final


     S. Carolina St. 


    13 - 52


     (4) Clemson 
    Final


     Middle Tenn. St. 


    20 - 40


     North Carolina 
    Final


     Central Conn. St. 


    44 - 51


     Lehigh 
    Final OT


     Army 


    14 - 40


     Ball St. 
    Final

问题是我必须从这个url http://sports.yahoo.com/college-football/scoreboard/?conf=all获取足球框分数,当用户在命令行参数中给出学校名称时,它必须转到这个URI来检查学校名称,如果有超链接,它必须重定向并获取box分数

^{pr2}$

如果游戏正在进行,则检索到的分数应休眠指定的秒数,然后检索最新的得分。所以我不知道我该走哪条路!需要帮助,因为我是python新手。在


Tags: texttrueurl内容参数分数finalst
2条回答

结构是[团队1][得分][团队2][游戏注释]?E、 g.[团队1]='诺福克街',[分数]='0-38',[团队2]='罗格斯',[游戏说明]='最终'?在

以及:你的目标是在命令行中输入一个团队来检索他们参加过的所有比赛的记录(两个团队,以及分数)?在

假设这两种情况:我首先尝试用行标记:

lines = your_string.split('\n').
clean_lines = [l.strip() for l in lines]

然后我会建立一个实际游戏的列表:

^{pr2}$

如果要查找给定团队所玩的所有游戏,只需迭代游戏列表并检查该团队的字符串是否出现在0或2索引中。但是,如果您要多次查找,那么最好构建一个字典,其中的键是团队名称,值是他们所玩游戏的索引。在

希望有帮助!在

我不想用正则表达式。根据文本,它看起来像字符串减去空白,大致遵循并重复以下格式:

thing 1
score
thing 2
"final"

因此,我可以继续,清理字符串,遍历它,并将每组4作为字典的一部分返回。在

例如:

^{pr2}$

然后,您可以:

>>> raw = ''.join(soup.findAll(text=True))
>>> scores = get_scores(raw)
>>> print scores['Norfolk St.']
('Norfolk St.', '0 - 38', 'Rutgers')

如果希望查找不区分大小写,可以执行以下操作:

def get_scores(raw):
    clean = [line.strip().lower() for line in raw.split('\n') if line.strip() != '']
    return {thing1: (thing1, score, thing2) for (thing1, score, thing2, _) in chunk(clean, 4)}

如果您想查找“Norfolk St.”或“Rutgers”并得到相同的结果,可以执行以下操作:

def get_scores(raw):
    clean = [line.strip().lower() for line in raw.split('\n') if line.strip() != '']
    output = {}
    for (thing1, score, thing2, _) in chunk(clean, 4):
        data = (thing1, score, thing2)
        output[thing1] = data
        output[thing2] = data
    return output

相关问题 更多 >