使用文字 r 和变量 Python 创建一个字符串
Making a String with literal r and variables Python
我目前正在尝试为这样的事情制作抽象方法:
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)
如果以后有人需要这个,我是这样做的(使用 json,gre_gor 在对我的问题的评论中发布了 link。
以字符串开头:
precon = ("{\"%(n)s\":\"%(v)s\"}" % {"n" : precondition.name,"v" : precondition.value})
获得它的另一种方法是将其添加到前提条件中:
def as_dict(self):
return {self.name: self.value}
然后像这样使用它:
precons = str(precondition.as_dict())
precons = precons.replace("\'", "\"")
这两种方式都会给您留下这样的字符串:
{"_tag":"tagged"}
然后使用 json.dumps 执行与 r'' 相同的操作
precon = json.dumps(precon)
之后它应该是这样的:
"{\"_tag\":\"tagged\"}"
由于json.dumps在开头和结尾添加了",所以如果不需要它们,记得去掉它们。
我目前正在尝试为这样的事情制作抽象方法:
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)
如果以后有人需要这个,我是这样做的(使用 json,gre_gor 在对我的问题的评论中发布了 link。
以字符串开头:
precon = ("{\"%(n)s\":\"%(v)s\"}" % {"n" : precondition.name,"v" : precondition.value})
获得它的另一种方法是将其添加到前提条件中:
def as_dict(self):
return {self.name: self.value}
然后像这样使用它:
precons = str(precondition.as_dict())
precons = precons.replace("\'", "\"")
这两种方式都会给您留下这样的字符串:
{"_tag":"tagged"}
然后使用 json.dumps 执行与 r'' 相同的操作
precon = json.dumps(precon)
之后它应该是这样的:
"{\"_tag\":\"tagged\"}"
由于json.dumps在开头和结尾添加了",所以如果不需要它们,记得去掉它们。