RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Angelina
Asked: 2025-02-28 05:28:23 +0000 UTC

如何将具有不同结构的 JSON 字符串正确解析为一列(PostgreSQL)?

  • 4

有一个表,其中 pars_col 列包含不同结构的 json 字符串。第一行类型:{'values': [{'test': 'A', 'values': [{'value': 8, 'test': 'B'}]}]},第二行类型:{'values': [{'value': 21.0, 'test': 'D'}]}。一行可以包含多个在测试中含义不同、名称不同的值。我需要提取每一行的所有值并将它们相加。所有这些都需要保存在一列中。

代码有几个错误,感谢@ValNik,他的评论使它变得更好。还剩下一个问题,我的代码没有从数组双重嵌套的行中提取所有值。

例如表格中包含一行:{"values": [{"test": "A", "values": [{"value": 2, "test": "B"}]}, {"test": "D", "values": [{"value": 3, "test": "E"}]}]}'::TEXT),代码只会从中提取2,但是需要提取2和3并将它们相加。

我的代码:

-- временная таблица для примера 
CREATE TEMP VIEW df AS
SELECT
    prg_id,
    name,
    dt,
    pars_col::json as pars_col
FROM
(
    SELECT
        prg_id,
        name,
        dt,
        pars_col
    FROM
        (VALUES
            (1, 'Product A', '2023-01-01'::DATE, '{"values": [{"test": "A", "values": [{"value": 8, "test": "B"}]}]}'::TEXT),
            (2, 'Product B', '2023-02-01'::DATE, '{"values": [{"value": 21.0, "test": "D"}]}'::TEXT),
            (23, 'Product C', '2023-01-01'::DATE, '{"values": [{"test": "A", "values": [{"value": 5, "test": "B"}]}, {"value": 10, "test": "D"}]}'::TEXT),
            (245, 'Product D', '2023-02-01'::DATE, '{"values": [{"test": "A", "values": [{"value": 2, "test": "B"}]}, {"test": "D", "values": [{"value": 3, "test": "E"}]}]}'::TEXT),
            (32, 'Product E', '2023-01-01'::DATE, '{"values": [{"value": 15, "test": "F"}]}'::TEXT),
            (31, 'Product G', '2023-02-01'::DATE, '{"values": [{"test": "G", "values": [{"value": 7, "test": "H"}]}]}'::TEXT)
        ) AS data(prg_id, name, dt, pars_col)
) as sub; 

-- запрос, с помощью которого я пытаюсь распарсить строки в колонке pars_col
SELECT
    prg_id,
    name,
    dt,
    sum(combined.value)
FROM df 
    CROSS JOIN LATERAL (
        SELECT
            SUM((elem ->> 'value')::numeric) AS value
        FROM
            pg_catalog.json_array_elements(pars_col -> 'values') AS elem

        UNION 

        SELECT
            SUM((elem2 ->> 'value')::numeric) AS value
        FROM
            pg_catalog.json_array_elements((pars_col -> 'values') -> 0 -> 'values') AS elem2
    ) AS combined
GROUP BY prg_id, name, dt

输出为: 查询结果

该表显示 prg_id 245 未完全提取值。请帮我修复错误。

sql
  • 1 个回答
  • 63 Views
Martin Hope
user693394
Asked: 2025-02-27 23:58:03 +0000 UTC

如何使用 HTML 和 CSS 将站点名称放置在授权块上?

  • 6

如何将站点名称置于授权块之上?

在此处输入图片描述

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>Камень, Ножницы, Бумага</title>
</head>
<body>
  <h1 class="main-name">фвы</h1>
    <div class="login-box">
        <div class="login-header">
            <header>Авторизоваться</header>
        </div>
        <div class="input-box">
            <input type="text" class="input-field" placeholder="Имя" autocomplete="off" required>
        </div>
        <div class="input-box">
            <input type="password" class="input-field" placeholder="Пароль" autocomplete="off" required>
        </div>
        <div class="input-submit">
            <button class="submit-btn" id="submit"></button>
            <label for="submit">Войти</label>
        </div>
        <div class="sign-up-link">
            <p>Нету аккаунта? <a href="#">Создайте</a></p>
        </div>
    </div>
</body>
</html>

@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500&display=swap');

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Poppins',sans-serif;
}

.main-name {
    text-align: center;
    font-size: 30px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
body{
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: #dfdfdf;
}
.login-box{
    display: flex;
    justify-content: center;
    flex-direction: column;
    width: 440px;
    height: 480px;
    padding: 30px;
}
.login-header{
    text-align: center;
    margin: 20px 0 40px 0;
}
.login-header header{
    color: #333;
    font-size: 30px;
    font-weight: 600;
}
.input-box .input-field{
    width: 100%;
    height: 60px;
    font-size: 17px;
    padding: 0 25px;
    margin-bottom: 15px;
    border-radius: 30px;
    border: none;
    box-shadow: 0px 5px 10px 1px rgba(0,0,0, 0.05);
    outline: none;
    transition: .3s;
}
::placeholder{
    font-weight: 500;
    color: #222;
}
.input-field:focus{
    width: 105%;
}
.forgot{
    display: flex;
    justify-content: space-between;
    margin-bottom: 40px;
}
section{
    display: flex;
    align-items: center;
    font-size: 14px;
    color: #555;
}
#check{
    margin-right: 10px;
}
a{
    text-decoration: none;
}
a:hover{
    text-decoration: underline;
}
section a{
    color: #555;
}
.input-submit{
    position: relative;
}
.submit-btn{
    width: 100%;
    height: 60px;
    background: #222;
    border: none;
    border-radius: 30px;
    cursor: pointer;
    transition: .3s;
}
.input-submit label{
    position: absolute;
    top: 45%;
    left: 50%;
    color: #fff;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    cursor: pointer;
}
.submit-btn:hover{
    background: #000;
    transform: scale(1.05,1);
}
.sign-up-link{
    text-align: center;
    font-size: 15px;
    margin-top: 20px;
}
.sign-up-link a{
    color: #000;
    font-weight: 600;
}
html
  • 1 个回答
  • 35 Views
Martin Hope
eglay
Asked: 2025-02-27 22:35:38 +0000 UTC

为什么尝试请求 Yandex Weather 时会发生禁止错误?

  • 5

我想获得 Yandex Weather 请求的回复。

我根据 Yandex Weather API 文档编写了一个请求:https://yandex.ru/dev/weather/doc/ru/concepts/forecast-info#req-ex

我在同一个 Yandex Weather API 网站上获得了一个临时访问密钥,它仍然有效。

我使用 geopy 库获取了一个城市的坐标。我通过 get 请求中的 f 字符串传递这些坐标,并且还使用从 API 站点获取的请求中的标头。

我不明白为什么我最终得到:

 {"message":"forbidden"}
from geopy.geocoders import Nominatim
import requests

access_key = 'd4253969-73e2-4ef8-9932-631053b02222'
city = input('Введите название города (латиницей), в котором вы хотите узнать погоду: ')

headers = {"X-Yandex-Weather-Key":"d4253969-73e2-4ef8-9932-631053b02222"}

def get_coordinates(city_name):
    loc = Nominatim(user_agent="GetLoc")
    getLoc = loc.geocode(city_name)
    return [getLoc.latitude, getLoc.longitude]

coordinates = get_coordinates(city)
print(f'Координаты: {coordinates}')
url = f'https://api.weather.yandex.ru/v2/informers?lat={coordinates[0]}&lon={coordinates[1]}'

response = requests.get(url, headers=headers)

print(response.text)
python
  • 1 个回答
  • 22 Views
Martin Hope
Alexey Trukhanov
Asked: 2025-02-27 17:12:09 +0000 UTC

按时间序列范围以最快的速度过滤动态数据

  • 7

笔记

在此任务中,您可以使用任何数据类型和模块,包括来自第三方开发人员的数据类型和模块(numpy, pandas, sorted containers等等)。主要标准是执行速度。

鉴于:

我们的逻辑的输入是连续提供相同结构的字典,其中包含某个事件的信息(参数)。在这些字典中,几个值是类型float(我们称之为键param_1, param_2...),其中一个值是该事件的时间戳(我们称之为键dt)。我们将这本词典分析成不同的列表。每个参数都在单独的列表中,时间序列也在单独的列表中。因此,在不同列表中的同一索引下存在有关同一事件的信息。我们知道时间戳是不递减的,这意味着下一个时间戳可以等于或大于前一个时间戳。相邻标记之间的时间增量是有条件随机的,可以是微秒,可以是几分钟,也可以有条件地不存在。

我们还给出了一个时间间隔(我们称之为duration)

任务

为了进一步处理,我们需要上述列表包含有关duration最后一个传入事件内的事件的信息。所有早于此时间的事件均被删除。

我的决定

我们接受吧pandas.Dataframe。事件到达——我们将字典分布在数据框的各列中。dt使用 mask按列进行过滤dt > время последнего события - duration。我们将数据框分成列表。

为了清楚起见,我编写了一个流程模拟器:

import time
import datetime
import random
import pandas as pd

random.seed(123)
duration = 30
df = pd.DataFrame(columns=['Param_1', 'Param_2', 'Param_3', 'dt'])

for _ in range(10000):
    # получили словарь
    input_dict = {'Param_1': random.random(),
                  'Param_2': random.random(),
                  'Param_3': random.random(),
                  'dt': datetime.datetime.now()}

    # добавили в датафрейм
    df.loc[0 if df.empty else df.index[-1]+1] = input_dict.values()

    # отфильтровали
    df = df.loc[df['dt'].gt(df.dt.iloc[-1] - datetime.timedelta(seconds=duration))]

    # разобрали по спискам
    param_1 = df.Param_1.to_list()
    param_2 = df.Param_2.to_list()
    param_3 = df.Param_3.to_list()
    dt = df.dt.to_list()

    # это рандомная задержка, чтобы эмулировать случайную разницу между событиями
    time.sleep(random.random() * 3)

问题

还有其他更快的选择吗?我将非常感激任何有关代码优化的评论。

python
  • 3 个回答
  • 142 Views
Martin Hope
Silent Mind
Asked: 2025-02-27 15:03:49 +0000 UTC

在 SPA 中实现画廊

  • 5

有一个 API 可以以 100 个对象块的形式返回 JSON。除了基本信息之外,对象还包含缩略图的链接。在渲染页面时额外发出 100 个请求来加载图像是否最佳?或者有没有更有效的组织 API 的解决方案?

api
  • 1 个回答
  • 26 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5