带replace的Python分析字符串不起作用

2024-10-04 05:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串要转换成json。你知道吗

字符串如下所示:

s='{\\'kind\\': 1, \\'topic\\': \\'manufacturing_device\\', \\'message_type\\': 1, \\'txid\\': \\'6bcc6212a8\\', \\'name\\': \\'manufacturing\\'}'

我使用json转储和加载,不起作用

jStr = json.dumps(s)
loadStr = json.loads(jStr)

然后我需要访问loadStr['topic'],它会给我错误“字符串索引必须是整数”

那我想也许我需要替换"\\" 因此,我做了s.replace('\\\'', '\"'),也没有工作。你知道吗

知道我做错了什么吗?顺便说一下,我使用的是Python3.6


Tags: 字符串namejsonmessagetopicdevicetype错误
3条回答

错误是因为loadStr是字符串。因此,不能对字符串使用getitem。你知道吗

只需将一个字符串而不是python对象打包为json。你知道吗

所以你想通过这行的键来获取值

loadStr = json.loads(jStr)

你会把这根绳子拿回来的。你知道吗

所以我觉得你需要这样的东西:

import json
s='{"kind": 1, "topic": "manufacturing_device", "message_type": 1, "txid": "6bcc6212a8", "name": "manufacturing"}'
load_str = json.loads(s)
print(load_str['kind'])

顺便说一句,当您使用python字符串时,使用单引号和双引号更容易,以免转义相同的引号。你知道吗

s='{"kind": 1, "topic": "manufacturing_device", "message_type": 1, "txid": "6bcc6212a8", "name": "manufacturing"}'

你可以用这样的东西

import ast
s='{\'kind\': 1, \'topic\': \'manufacturing_device\', \'message_type\': 1, \'txid\': \'6bcc6212a8\', \'name\': \'manufacturing\'}'

ne = ast.literal_eval(s)
print(type(ne))
print(ne['topic'])

输出

<class 'dict'>
manufacturing_device

相关问题 更多 >