如何在另一个字符串的中间插入字符串的引号

2024-09-29 21:34:39 发布

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

我需要更改此字符串:

input_str = '{resourceType=Type, category=[{coding=[{system=http://google.com, code=item, display=Item}]}]}'

要转换为json格式:

output_str = '{"resourceType":"Type", "category":[{"coding":[{"system":"http://google.com", "code":"item", "display":"Item"}]}]}'

使用替换函数将等号“=”更改为冒号“:”非常简单:

input_str.replace("=", ":")

但是在每个值/单词前后加引号是我找不到解决办法的


Tags: 字符串comhttpinputtypedisplaygooglecode
3条回答

您可以使用此函数进行转换

def to_json(in_str):
    return in_str.replace('{', '{"').replace('=', '":"').replace(',', '", "').replace('[', '[').replace('}', '"}').replace(']', ']').replace('" ', '"').replace(':"[', ':[').replace(']"', ']')

这对于您提到的输入是正确的

print(to_json(input_str))

#output = {"resourceType":"Type", "category":[{"coding":[{"system":"http://google.com", "code":"item", "display":"Item"}]}]}

Regex当然更加简洁高效,但为了好玩,也可以使用replace:

input_str = input_str.replace("=", "\":\"")
input_str = input_str.replace("=[", "\":[")
input_str = input_str.replace(", ", "\", \"")
input_str = input_str.replace("{", "{\"")
input_str = input_str.replace("}", "\"}")
input_str = input_str.replace("]\"}", "]}")
input_str = input_str.replace("\"[", "[")

print(input_str) #=> '{"resourceType":"Type", "category":[{"coding":[{"system":"http://google.com", "code":"item", "display":"Item"}]}]}'

我建议用双引号括住标记中未保留的任何字符序列。我还提供了转义双引号,您可以向其中添加更多转义符号:

import re
input_str = '{resourceType=Type, category=[{coding=[{system=http://google.com, code=item, display=Item}]}]}'
output_str = re.sub (r'(([^=([\]{},\s]|\")+)', r'"\1"', input_str).replace('=', ':')
print (output_str)

输出:

{"resourceType":"Type", "category":[{"coding":[{"system":"http://google.com", "code":"item", "display":"Item"}]}]}

相关问题 更多 >

    热门问题