【问题标题】:how to stop table data from over lapping other columns with pandas, bs4, requests and tabulate如何阻止表数据与熊猫、bs4、请求和制表重叠的其他列
【发布时间】:2021-05-12 23:59:06
【问题描述】:

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

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)

【问题讨论】:

标签: python pandas beautifulsoup python-requests tabulate


【解决方案1】:

在使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 2019-09-09
    • 2022-10-20
    • 2020-11-12
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2015-09-11
    相关资源
    最近更新 更多