0

目前我有下面的代码,用于在多伦多显示活跃的消防电话,在某些情况下,派出了很多消防车,当它被刮到一个表格时,派出的单位似乎与其他列和行重叠,我希望它被组织在下面彼此在一个列中。

import discord
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate

client = discord.Client()

@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
if message.author == client.user:
    return

if message.content.startswith('$hello'):
    await message.channel.send('Hello!')


if __name__ == '__main__':
endpoint = "https://www.toronto.ca/data/fire/livecad.xml?i4sqso"
header = [
    "Prime Street", "Cross Street", "Dispatch Time", "Incident Number",
    "Incident Type", "Alarm Level", "Area", "Dispatched Units"
]

page = requests.get(endpoint).text
events = BeautifulSoup(page, "lxml").find_all("event")

event_table = []
for event in events:
    row = event.getText(separator="|").split("|")
    if len(row) == 7:
        row.insert(1, "")
    event_table.append(row)
4

1 回答 1

0

当您使用 XML 时,无需拆分。只需遍历每个事件并从每个事件中获取文本:

import requests
from bs4 import BeautifulSoup
import pandas as pd

if __name__ == '__main__':
    endpoint = "https://www.toronto.ca/data/fire/livecad.xml?i4sqso"
    header = [
        "Prime Street", "Cross Street", "Dispatch Time", "Incident Number",
        "Incident Type", "Alarm Level", "Area", "Dispatched Units"
    ]

    page = requests.get(endpoint).text
    events = BeautifulSoup(page, "lxml").find_all("event")
    event_table = []
    
    for event in events:
        event_table.append([e.get_text(strip=True) for e in event])

    df = pd.DataFrame(event_table, columns=header)
    print(df)

这将为您提供如下表格:

        Prime Street             Cross Street        Dispatch Time Incident Number                 Incident Type Alarm Level Area                           Dispatched Units
0  LYNEDOCK CRES, NY  FENSIDE DR / CLIMANS RD  2021-05-12 10:40:37       F21044501            Fire - Residential           2  233  R115, P233, P245, P123, A244, C11, C24...
1    DUFFERIN ST, NY  SPARROW AVE / RANEE AVE  2021-05-13 03:26:13       F21044810  Fire - Commercial/Industrial           2  145  P145, R133, P132, P143, A341, C13, R34...
2                M1R                           2021-05-13 04:10:49       F21044814                       MEDICAL           0  233                                       P233
3                M2N                           2021-05-13 04:31:47       F21044816                       MEDICAL           0  114                                       P114
于 2021-05-13T08:51:14.180 回答