第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 f-string 函數(shù)處理復(fù)雜字符串

使用 f-string 函數(shù)處理復(fù)雜字符串

概述在這個(gè)簡(jiǎn)化的示例中,我有一個(gè)返回字符串的函數(shù)。該字符串最終將用于 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)當(dāng)我調(diào)用該函數(shù)時(shí),我需要用單引號(hào)將雙引號(hào)括起來(lái),以便函數(shù)返回所需的字符串。updateHasura('"test"','"test"','"1"')給了我想要的輸出:mutation {      insert_post(objects: {description: "test", url: "test", user_id: "1"}) {        affected_rows      }    }問(wèn)題我不想在調(diào)用函數(shù) ie 時(shí)雙重?fù)Q行文本'"test"'。f 弦中的嵌套花括號(hào){{}}也不太理想。如何簡(jiǎn)化此功能并仍返回所需的輸出?如果可以簡(jiǎn)化這一點(diǎn),我很樂(lè)意使用 f-string 以外的另一種方法。
查看完整描述

4 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

編輯 2


受Ramon Moraes回答的啟發(fā),我想出了另一個(gè)解決方案,這可能是一個(gè)很好的折衷方案:


def updateHasura(description, url, user_id):

    args = f'description: "{description}", url: "{url}", user_id: "{user_id}"'

    query = """

    mutation {

      insert_post(objects: args) {

        affected_rows

      }

    }

    """.replace('args', args)

    print(query)



updateHasura('test', 'test', '1')

原始答案


要擺脫雙引號(hào),您可以簡(jiǎn)單地將引號(hào)放在 f 字符串中,如下所示:


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')

只要您使用格式化的字符串,我看不出如何擺脫嵌套的大括號(hào)。


編輯


如果你真的不想嵌套大括號(hào),我想你可以這樣做,但我不推薦它:


    query = """

    mutation {

      insert_post(objects: {description: "{""" + description + """}", url: "{"""  + url + """}", user_id: "{""" + user_id + """}"}) {

        affected_rows

      }

    }

    """

或者


    query = """

    mutation {

      insert_post(objects: {description: "%s", url: "%s", user_id: "%s"}) {

        affected_rows

      }

    }

    """ % (description, url, user_id)


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

簡(jiǎn)化函數(shù)并使編寫(xiě)參數(shù)更容易的一種簡(jiǎn)單方法是簡(jiǎn)單地將參數(shù)的使用用引號(hào)括起來(lái),這些參數(shù)在 f 字符串中使用。


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')

這將提供相同的所需輸出,但不需要在參數(shù)中嵌套引號(hào)。


mutation {

  insert_post(objects: {description: "test", url: "test", user_id: "1"}) {

    affected_rows

  }

}

不幸的是,如果不編寫(xiě)自己的函數(shù)來(lái)解析字符串本身,就無(wú)法在避免使用雙花括號(hào)的同時(shí)保持 f 字符串提供的相同便利。


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

只是作為替代f-string,您可以使用str.format. 不過(guò),您仍然必須保留嵌套的大括號(hào)。


query = """

mutation {{

  insert_post(objects: {{description: "{0}", url: "{1}", user_id: "{2}"}}) {{

    affected_rows

  }}

}}

"""


print(query.format("test", "test", "1"))


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

[1] - 由于您傳遞了 1,因此我假設(shè)“user_id”我們最初是一個(gè) int。因此,如果需要,扔一件糖衣并將其轉(zhuǎn)換為內(nèi)部。


[2] - 顯然你正試圖在你的字符串中注入一個(gè) JSON?;诖耍艺J(rèn)為在字符串之外構(gòu)建它并稍后注入它更容易。這將為以后更新代碼提供更大的靈活性:


[3] - 代碼更改后,我認(rèn)為嘗試使用插值“強(qiáng)制”模式毫無(wú)意義。它看起來(lái)干凈而精簡(jiǎn),但在這種情況下,我認(rèn)為值得放棄它以支持簡(jiǎn)單的替換。它消除了額外{讓您的模板更清晰易讀的需要


import json



def updateHasura (description, url, user_id):

    if isinstance(user_id, int):  # [1]

        user_id = str(user_id)

    # [2]

    args = {

        'description': description,

        'url': url,

        'user_id': user_id,

        }

    args = json.dumps(args)

    query = '''

    mutation {

      insert_post(

        objects: args) {

        affected_rows

      }

    }

    '''

    return query.replace('args', args)  # [3]


print(updateHasura('test', 'test', '1'))

print(updateHasura('test', 'test', 1))

[4] 如果你真的想進(jìn)一步減少代碼,你可以強(qiáng)制用戶傳遞所有格式化的參數(shù)和各自的最終鍵名,并將kwargs直接拉到轉(zhuǎn)儲(chǔ)


import json



def updateHasura (**kwargs):  # 4

    query = '''

    mutation {

      insert_post(

        objects: args) {

        affected_rows

      }

    }

    '''

    return query.replace('args', json.dumps(kwargs))


print(updateHasura(description='test', url='test', user_id='1'))


查看完整回答
反對(duì) 回復(fù) 2022-11-01
  • 4 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)