占位符

时间:2017-11-03 08:56:20

标签: python string python-2.x string-literals

我有一个列表: token_found = ["abcdxyz", "1234567"]

我有一个多行字符串如下:

user_creds_string = """
UserA_A:
    - name: 'Abcd'
      value: '{0}'
UserB_B:
    - name: 'Abcd'
      value: '{1}'
headers:
  - name: 'Abcd'
    value: 'Kota %(xyz)'
    inputs:
      apop: {'type':'hex-64', 'required': True} 
  - name: 'X-Broke'
    value: '%(BId) %(blahId)'
    inputs:
      UkID: {'type':'hex-16', 'required': True} 
      blahId: {'type':'hex-64', 'required': True} 
apis:
    """.format(token_found[0],token_found[1])

现在,当我运行上述代码时,我希望占位符{0}{1}分别替换为值abcdxyz1234567,除非我这样做有些不对劲,我不明白。

与我的假设相反,我收到以下错误: KeyError: "'type'"

2 个答案:

答案 0 :(得分:2)

花括号{}应加倍,以便按字面打印:

token_found = ["abcdxyz", "1234567"]
user_creds_string = """
UserA_A:
    - name: 'Abcd'
      value: '{0}'
UserB_B:
    - name: 'Abcd'
      value: '{1}'
headers:
  - name: 'Abcd'
    value: 'Kota %(xyz)'
    inputs:
      apop: {{'type':'hex-64', 'required': True}}
  - name: 'X-Broke'
    value: '%(BId) %(blahId)'
    inputs:
      UkID: {{'type':'hex-16', 'required': True}}
      blahId: {{'type':'hex-64', 'required': True}}
apis:
    """.format(token_found[0],token_found[1])

print(user_creds_string)

输出:

UserA_A:
    - name: 'Abcd'
      value: 'abcdxyz'
UserB_B:
    - name: 'Abcd'
      value: '1234567'
headers:
  - name: 'Abcd'
    value: 'Kota %(xyz)'
    inputs:
      apop: {'type':'hex-64', 'required': True}
  - name: 'X-Broke'
    value: '%(BId) %(blahId)'
    inputs:
      UkID: {'type':'hex-16', 'required': True}
      blahId: {'type':'hex-64', 'required': True}
apis:

答案 1 :(得分:1)

你需要逃避{format看到模式{'type',并尝试在'type' kwargs中查找format

我记得要逃避加倍,{{