Estoy usando una pequeña secuencia de comandos de Python para generar algunos datos binarios que se utilizarán en un encabezado C.Obtener str repr con comillas dobles Python
Estos datos debe ser declarada como char[]
, y que será bueno si pudiera ser codificada como una cadena (con las secuencias de escape pertinentes cuando no están en el rango de ASCII caracteres imprimibles) para mantener la cabecera más compacto que con una codificación de matriz decimal o hexadecimal.
El problema es que cuando imprimo el repr
de una cadena de Python, está delimitado por comillas simples, y C no le gusta. La solución es hacer ingenua:
'"%s"'%repr(data)[1:-1]
pero eso no funciona cuando uno de los bytes de los datos pasa a ser una cita doble, por lo que necesitaría que sean escaparon también.
Creo que un simple replace('"', '\\"')
podría hacer el trabajo, pero tal vez hay una solución mejor, más pitonica por ahí.
punto extra:
Sería conveniente también para dividir los datos en líneas de aproximadamente 80 caracteres, pero de nuevo el enfoque simple de splitting the source string in chunks de tamaño 80 no funcionará, ya que cada carácter no imprimible toma 2 o 3 caracteres en la secuencia de escape. Dividir la lista en fragmentos de 80 después de obtener la repr tampoco ayudará, ya que podría dividir la secuencia de escape.
¿Alguna sugerencia?
no es el 'elif "\\\". "Encontrar (c)! = -1' lo mismo que 'elif c en "\\\""'? En cualquier caso, estoy de acuerdo, repr() no es la solución aquí y tienes que hacer algo como esto. –
La recomendación del texto de 80 columnas no se basó en el ancho del monitor. Viene de la tipografía. Mire algunos periódicos: mire una publicación sensacionalista en una hoja ancha. ¿Qué tan anchas son las columnas? –