0

我将给出一些我制作的代码片段。这里是:

url = urlopen("http://sports.yahoo.com/nhl/scoreboard?d=2013-01-19")
content = url.read()
soup = BeautifulSoup(content)

def yahooscores():
    for table in soup.find_all('table', class_='player-title'):
        for row in table.find_all('tr'):
            date = None
            for cell in row.find_all('td', class_='yspsctnhdln'):
                for text in cell:
                    date = cell.text
            if date is not None:
                print ('%s' % (date) + ", 2013:")

我试图从网站的日期部分中删除“分数和时间表”一词,但我无法使用 .split() 和 .strip() 方法做到这一点。

所以,让我以上面的网站为例来解释一下我想做什么。

到目前为止,这是约会的结果:

Scores & Schedule: Jan 19, 2013:

我只想要这个:

Jan 19, 2013:

为了去掉这三个词,我有什么特别需要知道的吗?

4

5 回答 5

1

的实际内容cell.text是:

'\nScores & Schedule: Jan 19\n'

...因此,首先从其中(最后两个词)中获取您需要的内容,然后添加', 2013:'到其中更有意义,因为我认为您已经在尝试这样做。的一个方便的功能split()是它会自动去除前导和尾随空格,因此获得所需内容的最可靠方法可能是将最后一行更改为:

                print(' '.join(date.split()[-2:]) + ', 2013:')

这将拆分date为一个单词列表.split(),然后使用[-2:]获取列表中的最后两个单词,然后使用空格将它们连接在一起' '.join(...),最后在打印结果之前添加', 2013:'到末尾。

作为旁注,'%s' % (date)在您的原始版本中绝对没有做任何事情:您所做的只是用date自己替换。可能值得熟悉有关百分比格式的文档,以便了解原因。

于 2013-08-21T03:42:13.847 回答
0

只需用空字符串替换不需要的部分。

>>> "Scores & Schedule: Jan 19, 2013:".replace("Scores & Schedule:", "")
' Jan 19, 2013:'
于 2013-08-21T03:30:49.873 回答
0

保持简单:

>>> s = "Scores & Schedule: Jan 19, 2013:"
>>> s.replace("Scores & Schedule:", "")
' Jan 19, 2013:'
于 2013-08-21T03:30:57.180 回答
0
date = "Scores & Schedule: Jan 19, 2013:"

有很多选择:

date = date[19:]

date = date.replace("Scores & Schedule: ", "")

date = date.split(":")[1].strip()+":"

仅举几例。

于 2013-08-21T03:31:30.603 回答
0

怎么样:

print(date[20:].strip('\n') + ', 2013')

这是假设响应中总是有“分数和时间表:”。

于 2013-08-21T05:35:39.393 回答