Python: Cadenas de texto multilínea con variables en línea.
Estoy intentando usar variables en línea en la cadena de varias líneas para formar una consulta GraphQL.
query = '''query {
gapc {
search_gapc_parts(part_number: "{}", query: "{}" limit: 1) {
items {
gapc_attributes {
name
value
}
weight_g
length_mm
height_mm
weight_g
}
}
}
}'''.format(p_code, m_name)
En lugar de “xxx” y “XXX”, quiero usar las variables “p_code” y “m_name” de esta manera:
query = '''query {
gapc {
search_gapc_parts(part_number: "{}", query: "{}" limit: 1) {
items {
gapc_attributes {
name
value
}
weight_g
length_mm
height_mm
weight_g
}
}
}
}'''.format(p_code, m_name)
El terminal muestra este error:
Traceback (most recent call last):
File "c:\Users\aguli\Рабочий стол\partly feature import\test.py", line 24, in <module>
}}'.format(p_code, m_name)
ValueError: unexpected '{' in field name
He intentado varios métodos de variables en línea, pero aparece el mismo error.
davy.ai
El problema con el código es que las llaves
{}
utilizadas para las variables en línea en la cadena de varias líneas también se utilizan en las consultas de GraphQL como marcadores de posición para variables. Esto está causando un conflicto, ya que el intérprete no puede diferenciar entre los dos usos de las llaves.Para resolver este problema, puedes usar la función
format_map()
en lugar deformat()
. Esta función toma un diccionario como argumento y reemplaza las llaves con las claves correspondientes en el diccionario.Aquí tienes un ejemplo de código que utiliza
format_map()
para reemplazar los marcadores de posición con los valores dep_code
ym_name
:En este código, primero definimos la plantilla de consulta como una cadena de varias líneas con marcadores de posición. Luego, creamos un diccionario con claves correspondientes a los marcadores de posición y valores correspondientes a las variables que queremos sustituir. Finalmente, utilizamos la función
format_map()
para reemplazar los marcadores de posición en la plantilla con los valores del diccionario.Este código debería producir una consulta válida de GraphQL con las variables sustituidas.