概述
在这个简化的示例中,我有一个返回字符串的函数。字符串最终将用于GraphQL变异
def updateHasura (description,url,user_id):
query = f"""
mutation {{
insert_post(objects: {{description: {description}, url: {url}, user_id: {user_id}}}) {{
affected_rows
}}
}}
"""
print(query)
当我调用函数时,我需要用单引号将双引号括起来,以便函数返回所需的字符串
updateHasura('"test"','"test"','"1"')
提供所需的输出:
mutation {
insert_post(objects: {description: "test", url: "test", user_id: "1"}) {
affected_rows
}
}
问题
我不想在调用函数时双重包装文本,即'"test"'
f字符串中嵌套的花括号{{}}
也不太理想
如何简化此函数并仍然返回所需的输出?我很乐意使用f字符串以外的另一种方法,如果它可以简化这一点的话
编辑2
受Ramon Moraes答案的启发,我提出了另一个解决方案,这可能是一个很好的折衷方案:
原始答案
要消除双引号,只需在f字符串中添加引号,如下所示:
我不知道如何摆脱嵌套的花括号,但只要您使用的是格式化字符串
编辑
如果你真的不想有嵌套的花括号,我想你可以这样做,但我不推荐:
或
简化函数并使编写参数更容易的一种简单方法是,在f字符串中使用参数的地方,简单地用引号括起参数的用法
这将提供相同的所需输出,但不需要在参数中使用嵌套引号
不幸的是,如果不编写自己的函数来解析字符串本身,就无法保持f字符串提供的便利性,同时避免使用折叠大括号
作为
f-string
的替代方法,您可以使用str.format
。不过,您仍然需要保留嵌套的花括号相关问题 更多 >
编程相关推荐