es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Uso de un símbolo “%” en una variable

Estoy tratando de usar la siguiente declaración:

sssd_conf = \
    ''enumerate = true\n' \
    ''ldap_default_bind_dn = %(machines_ldap_dn)s\n' \
    ''ldap_default_authtok_type = password\n' \
    ''ldap_default_authtok = %(ldap_password)s\n' \
    ''use_fully_qualified_names = false\n' \
    ''override_homedir = /home/%d/%u\n' \
    % {
        ''ldap_password': self.ldap_password,
        ''machines_ldap_dn': get_machines_ldap_dn(ldap_master, master_username, master_pw),
        ''master_ip': master_ip
    }

Cuando ejecuto el código con esta variable, obtengo TypeError: not enough arguments for format string.

Como puedes ver, *necesito* usar un códo literal % en 'override_homedir = /home/%d/%u\n', pero Python interpreta %d y %u como variables para colocar en esas posiciones. ¿Cómo puedo escapar el % en mi declaración?

Intenté 'override_homedir = /home/\%d/\%u\n', pero esto no funcionó.

Por cierto, este código es de Python 2.7. Lo heredé y no quiero migrarlo a la versión 3 en este momento.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para escapar el carácter % en la cadena, puedes utilizar otro carácter %. Por lo tanto, tu línea debería ser:

    'override_homedir = /home/%%d/%%u\n' \
    

    Esto dará como resultado la cadena literal /home/%d/%u.

Comments are closed.