我有两个字符串,如下所示:
a="{'c1': null, 'c2': 'null', 'c3': 'abcd', 'c4': null}"
我想替换将null转换为Null并添加引号(如果它们不存在),所以结果将是这样的:
"{'c1': 'Null', 'c2': 'Null', 'c3': 'abcd', 'c4': 'Null'}"
请问我能得到一些帮助吗?
PS:我正在使用python 2.7
提前谢谢
修改
我试过了:
def replace(element):
element.replace('null', "'Null'") #which doesn't work as I want beacause it adds quotes even if they already exist
答案 0 :(得分:0)
对于最简单的情况,您可以使用正则表达式解决此问题:
>>> import re
>>> re.sub(r"('?null'?)", "'Null'", "{'abcd': null}")
"{'abcd': 'Null'}"
>>> re.sub(r"('?null'?)", "'Null'", "{'abcd': 'null'}")
"{'abcd': 'Null'}"
>>>
但是从你的例子和评论(这应该是你的问题的一部分)提到你可能在字符串中有更多,我怀疑你在这里处理json。如果是这种情况,正确的解决方案(实际上唯一可靠的解决方案)是将您的字符串反序列化为Python(使用json.loads(...)
),更新生成的Python对象(通常是一个dict,但可能是一个dicts列表或者可能是包含包含dicts等的列表,然后使用json.dumps()
将其序列化。
答案 1 :(得分:-1)
基本上你想要给定字符串的第一部分,第二部分应该是Null
def fun(strig):
return str(strig.split(':')[0])+":'Null'}"