加载Python中不完全是JSON的字符串

2024-10-02 02:28:45 发布

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

我收到了一个文本格式的服务响应,很遗憾,我无法要求他们以JSON格式发送给我)以下是响应:

'{message: Successfully sent data for processing, execId: d03c96hg-4098-47b9-9e4b-3cb2c}'

我想将其转换为dict或json,但我无法这样做,因为{}中的字符串没有单引号或双引号。你知道吗

我尝试过使用json.loads()json.dumps()ast.literal()和其他一些方法,但未能获得所需的输出。你知道吗

所需输出为:

{'message': 'Successfully sent data for processing', 'execId' : 'd03c96hg-4098-47b9-9e4b-3cb2c' }

Tags: 文本格式字符串jsonmessagefordata格式dict
3条回答

通过一些字符串操作,您可以转换为:

代码:

def my_convert(a_string):
    convert = a_string.replace(
        ': ', '": "').replace(
        '}', '"}').replace(
        ', ', '", "').replace(
        '{', '{"')

    return json.loads(convert)

测试代码:

import json
data = '{message: Successfully sent data for processing, ' \
       'execId: d03c96hg-4098-47b9-9e4b-3cb2c}'

print(my_convert(data))

结果:

{'message': 'Successfully sent data for processing', 'execId': 'd03c96hg-4098-47b9-9e4b-3cb2c'}

这里有一个你可以尝试的代码,不知道pythonic与否:

g = '{message: Successfully sent data for processing, execId: d03c96hg-4098-47b9-9e4b-3cb2c}'
a = []
for i in g.split(","):
    a.append(i.strip("{}").split(":"))
b = {}
for j in a:
   b.update({j[i]: j[i+1] for i in range(0, len(j), 2)})
print(b)

它将给出如下o/p:

{'message': ' Successfully sent data for processing', ' execId': ' d03c96hg-4098-47b9-9e4b-3cb2c'}
data = '{message: Successfully sent data for processing, execId: d03c96hg-4098-47b9-9e4b-3cb2c}'
// actual string message: Successfully sent data for processing, execId: d03c96hg-4098-47b9-9e4b-3cb2c

    data_str = data[1:-1]
    t_arr = data_str.split(',')
    data_dict = {}
    for data in t_arr : 
        temp = data.split(':')
        data_dict[str(temp[0].strip())] = str(temp[1].strip())

    print data_dict 

相关问题 更多 >

    热门问题