亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建 json 限制?(不和諧)

如何創建 json 限制?(不和諧)

MMTTMM 2022-11-09 16:27:21
因此,在限制和解析為 json 時,我一直在努力提高我的知識。我會在代碼之后解釋更多。測試數據(兩種不同的測試數據):{    'sizes': ['EUR 40', 'EUR 40 2/3', 'EUR 41 1/3', 'EUR 42', 'EUR 42 2/3', 'EUR 43 1/3', 'EUR 44'],}---------------------------------------------------------------------{    'sizes': [{        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176877',        'size': 'EU 36 - [1]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176878',        'size': 'EU 36.5 - [1]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176879',        'size': 'EU 37.5 - [3]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176880',        'size': 'EU 38 - [6]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176881',        'size': 'EU 38.5 - [7]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176882',        'size': 'EU 39 - [8]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176883',        'size': 'EU 40 - [6]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176884',        'size': 'EU 40.5 - [5]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176885',        'size': 'EU 41 - [11]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176886',        'size': 'EU 42 - [11]'    }, {        'atc': 'https://test.com&token=e4d64f25476dcee4b08744d382dc405b&ipa=176887',        'size': 'EU 42.5 - [17]'    }在這里,我可能會發生 2 個不同的場景問題:不和諧嵌入的限制是 1028 個字符。這意味著如果一個嵌入超過 1028 個字符,由于不和諧的限制,它將無法發送到不和諧。此外,您可以看到有兩種不同的尺寸。一個沒有ATC,一個有ATC。所以我正在嘗試用 atc 創建一個新列表和一個沒有 atc 的新列表(第一次嘗試除了代碼)但是,我對這段代碼感覺不夠舒服,因為如果鏈接超長,它仍然會失敗,并且它總是會超過 1028 個字符,這將無法打印出來。所以我的問題是,我怎樣才能改進并確保我制作了一個“安全”的嵌入帖子
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

讓我們逐個看一下:

try:

    sizes = []

    for size in product.get('sizes'):

        if size.get('atc'):

            sizes.append('<{}|{}>'.format(size.get('atc'), size.get('size')))

        else:

            sizes.append(size.get('size'))


    product['sizes'] = sizes

except Exception:

    pass

你真的沒有任何地方可以拋出異常,除了size in product.get,它可能無法迭代None。


product['sizes'] = sizes = []

for size in product.get('sizes', ()):

    sizes.append((size.get('size'), size.get('atc'))

sizelist = []

for i in (i for i in product['sizes'] if i not in sizelist):

    sizelist.append(i)

讓我們嘗試將“atc”添加到沒有它的任何東西


atc_for_size = {}

for size, atc in sizes:

    atc_for_size.setdefault(size, atc)  # Keeps first found

sizelist = sorted(atc_for_size.items())

characterCount, i = 0, 0

for j, item in enumerate(sizelist):


    if len(item) + characterCount > 900:

        data['attachments'][0]['fields'].append(

            {

                'title': 'Sizes',

                'value': '\n'.join(sizelist[i:j]) if len(sizelist) else '*Sizes not found*',

                'short': True

            }

        )

        characterCount, i = len(item), j

    else:

        characterCount += len(item)

if characterCount:

    data['attachments'][0]['fields'].append(

        {

            'title': 'Sizes',

            'value': '\n'.join(sizelist[i:]) if len(sizelist) else '*Sizes not found*',

            'short': True

        }

    )

您在這里嘗試做什么并不明顯,您在帖子中提到字符有 1028 個限制,所以您需要盡可能多地適應?


如果 1028 限制是針對整個數據對象的,則您需要進行一些約束求解,并決定您是否寧愿只擁有不適合的尺寸,或者盡可能多地使用尺寸 + url,或者全部尺寸,最有可能的尺寸的 url 等等。如果不知道您在這里想要的行為,就沒有通用的解決方案。


如果您只需要將其分成足夠小的塊,那么您可以保留上面的邏輯,并在添加之前檢查它是否會使其太長。


請注意,此時sizelistcontains (size, url_or_None),而不是格式化的字符串,因此當您決定是否要包含 url 時,您需要重新引入該格式。


查看完整回答
反對 回復 2022-11-09
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號