【问题标题】:Python - String formatting convert escaped characters to literals [duplicate]Python - 字符串格式将转义字符转换为文字[重复]
【发布时间】:2019-03-14 14:19:24
【问题描述】:

我必须向后端发送一个字符串请求。我有 2 个变量,我必须在请求的字符串中格式化它们。请求必须如下所示:

"{\"MachineType\":0,\"BrokenMachines\":6}"

我有 2 个变量,称为 typecount,我想将它们放入请求中(示例中的 0 是 type,6 是 count)。我已经尝试了几乎所有我知道的东西,但我仍然无法获得带有转义字符的字符串,python 将它们转换为文字。以下是我尝试过的一些解决方案:

尝试:

("{\"MachineType\":" + str(type) + ",\"BrokenMachines\":" + str(count) + "}").encode('unicode_escape').decode('ASCII')

结果:

'{"MachineType":1,"BrokenMachines":6}'

尝试:

'{{\"MachineType\":{},\"BrokenMachines\":{}}}'.format(type, count).encode('unicode_escape').decode('ASCII')

结果:

'{"MachineType":1,"BrokenMachines":6}'

尝试:

"{{\\\"MachineType\\\":{},\\\"BrokenMachines\\\":{}}}".format(type, count)

结果:

'{\\"MachineType\\":1,\\"BrokenMachines\\":6}'

我怎样才能让它工作?

【问题讨论】:

  • 你没有尝试'{\\"MachineType\\":1,\\"BrokenMachines\\":6}'r'{\"MachineType\":1,\"BrokenMachines\":6}'
  • 另外,您似乎正在尝试输出 JSON。如果是这种情况,您应该使用 json 模块,而不是自己尝试这样做
  • '{\\"MachineType\\":1,\\"BrokenMachines\\":6} 是正确的输出。您混淆了值的字符串表示形式。请尝试 打印 值。您的值中有单个反斜杠,但字符串表示(这是重现该值的有效 Python 语法)使用双反斜杠,因为单个反斜杠会导致 .... 您之前尝试的输出。

标签: python python-3.x python-requests escaping unicode-escapes


【解决方案1】:

您可以使用单引号或双引号来表示字符串,因此如果您的字符串需要包含一个,则使用另一个。您也可以使用 r 字符串来转义所有特殊字符。

r'"{\"MachineType\":0,\"BrokenMachines\":6}"'

【讨论】:

  • 我知道,我使用了单引号,但我必须传递一个在内部显示 \" 的字符串,因为后端处理该字符串,如果它没有转义,它就会消失......
  • 它将显示反斜杠。这就是字符串上的“r”表示的,一个原始字符串。所以print(r'"{\"MachineType\":0,\"BrokenMachines\":6}"')会在控制台打印出"{\"MachineType\":0,\"BrokenMachines\":6}"
猜你喜欢
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2019-04-01
相关资源
最近更新 更多