【问题标题】:Convert a string "[Value]" to just [Value] in Python在 Python 中将字符串“[Value]”转换为 [Value]
【发布时间】:2019-09-08 02:06:14
【问题描述】:

我在 Python 中使用的 API 需要一个 JSON 格式的输入,如下所示:

  'type': 'leadlist',
  'filter': [1135],

但我只能用 Python 为 API 提供这种值:

  'type': 'leadlist',
  'filter': '[1135]',

键“过滤器”的值是这样生成的。请注意,第一个示例是否为“无”是一个字符串

'filter':f"[{key}]"

有什么办法不能是字符串吗?

编辑:预期的输入不是列表。它是我正在使用的软件中某个元素的 ID(数字),不知何故位于 JSON API 中的括号之间。

【问题讨论】:

  • 使用模块json
  • 生成该字符串的原因是什么?您应该修复它以返回 list 而不是 列表的字符串表示形式

标签: python json


【解决方案1】:

如果你可以将它作为一个列表传递,这是我认为它所期望的,那么你会这样做:

'filter':[key]

所以总的来说可能是这样的:

body = {'type': 'leadlist',
        'filter':[key]}

【讨论】:

  • 不幸的是,它不需要列表。括号中的数字是软件中元素的唯一 ID。我的信念是,无论谁为我正在使用的软件(Mautic)编写 Python 库,都没有想到必须在括号之间引用元素的 ID,因为该软件显然只接受括号之间的 ID 引用,而不是作为字符串。 .
  • 如果引用需要大括号而不是带方括号的字符串,它会采用一个列表,可能是整数。如果它也只需要一个整数,它可以设置为倍数和单数。如果它只是一个单独的,你应该把没有括号的 key 放在那里,假设 key 已经是一个整数。
  • 我在十分钟前得出了同样的结论,并尝试传递一个不带括号的整数,它奏效了:)。我在下面分享了答案!感谢您的宝贵时间!
【解决方案2】:

好吧,我只是想通了。

尽管 Mautic API 似乎期望元素的数字 ID 被括号引用,但它也只是将其作为整数接受,即使没有括号。

所以在这种情况下,解决方案是这样的:

  'type': 'leadlist',
  'filter': int(f'{value}'),

【讨论】:

  • 当你可以只写 value 或 int(value) 如果它不是整数时,你为什么要做 int(f'{value}')。 f 字符串用于将多个字符串放在一起,但在这种情况下,您只有一个项目,因此没有必要。只需引用该对象。
  • @GiraffeMan91 好点。我之前使用它是因为我引用了一个字符串并将其放在括号中,但实际上,现在它可以像您描述的那样简单地写下来:)谢谢!
【解决方案3】:

如果您确实希望将带括号的字符串转换为 python 列表,您可以这样 ast.literal_eval:

import ast
ast.literal_eval("[1,2,3]")
>> [1,2,3] #gives a python list

这适用于大多数 python 数据结构。

【讨论】:

    猜你喜欢
    • 2016-12-14
    • 2014-06-07
    • 2019-11-01
    • 1970-01-01
    • 2020-06-29
    • 2020-07-21
    • 2019-07-06
    • 2012-11-28
    • 2019-08-08
    相关资源
    最近更新 更多