繁体   English   中英

如何阻止表数据与 pandas、bs4、请求和制表的其他列重叠

[英]how to stop table data from over lapping other columns with pandas, bs4, requests and tabulate

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

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)

无需拆分,因为您正在使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM