我正在尝试为这样的事情制作抽象方法:
preset_create("TaggingAgain", r'{"weight": 0, "precondition": "{\"_tags\":\"tagged\"}"}')
在我的抽象中,用户可以在Preset对象中创建Precondition对象,然后创建它。
目前是这样的:
data = str({"weight" : preset.weight, "precondition" : "{}"})
data = data.replace("\'", "\"")
data = data.replace("}\"", "\"%(n)s\":\"%(v)s\"}" % {"n" : precondition.name,"v" : precondition.value})
(缩短版本,因为我将添加能够添加多个前提条件,后面带“for in”)
我的问题是{\“_ tags \”:\“tagged \”}部分需要在r''才能工作,而且当它中有变量时我不知道该怎么做。
其他可能有助于理解的代码:
class Precondition(object):
def __init__(self, name, operator, value):
self.name = name
self.value = value
class Preset(object):
def __init__(self, name, weight, *preconditions):
self.name = name
self.weight = weight
self.preconditions = preconditions
precondition = Precondition("_tag", "", "tagged")
createdPreset = Preset("TaggingAgain", "0", precondition)
preset_create(createdPreset)
答案 0 :(得分:0)
如果将来有其他人需要这个,那么我是怎么做到的(使用json,gre_gor在我的问题的评论中发布了一个链接)。
从字符串开始:
precon = ("{\"%(n)s\":\"%(v)s\"}" % {"n" : precondition.name,"v" : precondition.value})
另一种获得此方法的方法是将其添加到Precondition:
def as_dict(self):
return {self.name: self.value}
然后像这样使用它:
precons = str(precondition.as_dict())
precons = precons.replace("\'", "\"")
这两种方式都应该留下这样的字符串:
{"_tag":"tagged"}
然后使用json.dumps做同样的事情,即''会做的
precon = json.dumps(precon)
之后它应该是这样的:
"{\"_tag\":\"tagged\"}"
因为json.dumps添加"在开始和结束时,如果你不需要它们,请记得摆脱它们。