[pyar] Backslash en cadenas

emanuel sandoval davidemanuelsandoval en gmail.com
Lun Feb 12 12:27:21 ART 2018


Les agradezco mucho su ayuda. Ya pude encontrar la forma de hacerlo.
Lo del salto de línea fué por mi falta de conocimiento, y no me trajo
mayores problemas.
Al final, solo fue cuestión de escapar correctamente los caracteres
indicados.
Gracias a todos.

El 12/2/2018 12:00, <pyar-request en python.org.ar> escribió:

Envíe los mensajes para la lista pyar a
        pyar en python.org.ar

Para subscribirse o anular su subscripción a través de la WEB
        http://listas.python.org.ar/listinfo/pyar

O por correo electrónico, enviando un mensaje con el texto "help" en
el asunto (subject) o en el cuerpo a:
        pyar-request en python.org.ar

Puede contactar con el responsable de la lista escribiendo a:
        pyar-owner en python.org.ar

Si responde a algún contenido de este mensaje, por favor, edite la
linea del asunto (subject) para que el texto sea mas especifico que:
"Re: Contents of pyar digest...". Además, por favor, incluya en la
respuesta sólo aquellas partes del mensaje a las que está
respondiendo.


Asuntos del día:

   1. Backslash en cadenas (emanuel sandoval)
   2. Re: Backslash en cadenas (Tordek)
   3. Re: Backslash en cadenas (Tordek)
   4. Re: Backslash en cadenas (Facundo Batista)
   5. Re: Backslash en cadenas (Facundo Batista)


----------------------------------------------------------------------

Message: 1
Date: Sun, 11 Feb 2018 14:57:44 -0300
From: emanuel sandoval <davidemanuelsandoval en gmail.com>
To: pyar en python.org.ar
Subject: [pyar] Backslash en cadenas
Message-ID:
        <CAHUWMCbCxRCezrb11Lek3t2rbRZfJeNxZObk14L6oUCniyoXdw en mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hola, me gastaría saber cómo hacer para identificar cuándo una cadena
comienza con un backslash (\) y no sea un salto de línea. También quiero
saber como hacerlo para identificar cuándo ese caracter está al final de
una cadena.

He intentado usar expresiones regulares tales como r"^\", y algo simares
con los métodos de String, pero sencillamente no me funciona.

Soy muy nuevo en expresiones regulares, muchas gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/
20180211/df320636/attachment-0001.html>

------------------------------

Message: 2
Date: Sun, 11 Feb 2018 18:13:18 -0300
From: Tordek <kedrot en gmail.com>
To: Python Argentina <pyar en python.org.ar>
Subject: Re: [pyar] Backslash en cadenas
Message-ID:
        <CAKUXR6NR8wqbVK6Fsv=Y=1riyYD9j=cW4GnqpkGBjUPtM+pHtw en mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

r"^\\" detecta cadenas que empiecen (^) con \. Si bien r'' se usa para
que `\` no tenga comportamiento especial [1], tenés 2 contextos: el
intérprete de python (que si no usaras r'' querría convertir \\ en \),
y el intérprete de las regex, que le agrega su propio significado a \
(por ejemplo, \( no es una secuencia de escape en py, pero en regex
significa "es un ( literal y no el comienzo de un grupo"). Por eso si
evaluás r"^\\" te va a mostrar "^\\\\" porque cada par de \ es una \
escapada en el contexto de python, pero una sola en el contexto de la
regex.

¿A qué te referís con "y no sea un salto de línea"? Si tenés una
cadena como "\n123", esa cadena _no_ empieza con \; empieza con "\n":
es un solo caracter aunque uses 2 para escribirlo. Sí empieza con \ la
cadena r"\n123" porque ahí le decís "no uses el significado especial
de \, ponela literalmente".

TL;DR: r"^\\" y r"\\$"

[1] Pero... ¿acá hay un bug en el intérprete? Probé escribir r"\" y me
tira error de sintaxis... ¿cómo hacés si querés usar r'' y que termine
en \?

2018-02-11 14:57 GMT-03:00 emanuel sandoval <davidemanuelsandoval en gmail.com
>:
> Hola, me gastaría saber cómo hacer para identificar cuándo una cadena
> comienza con un backslash (\) y no sea un salto de línea. También quiero
> saber como hacerlo para identificar cuándo ese caracter está al final de
una
> cadena.
>
> He intentado usar expresiones regulares tales como r"^\", y algo simares
con
> los métodos de String, pero sencillamente no me funciona.
>
> Soy muy nuevo en expresiones regulares, muchas gracias.
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar


------------------------------

Message: 3
Date: Sun, 11 Feb 2018 18:21:54 -0300
From: Tordek <kedrot en gmail.com>
To: Python Argentina <pyar en python.org.ar>
Subject: Re: [pyar] Backslash en cadenas
Message-ID:
        <CAKUXR6PxXU0Cs3VGh2gLAqXENYJX4hTexRCt_1ycU0ue1R+M1A en mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

Re:[1] Bah, no es un bug, ahora caigo que puede llegar a ser útil para..

r'foo\'s a fool'

pero me sigue dejando la duda de "y cómo hacés si querés la \ al final?"

2018-02-11 18:13 GMT-03:00 Tordek <kedrot en gmail.com>:
> r"^\\" detecta cadenas que empiecen (^) con \. Si bien r'' se usa para
> que `\` no tenga comportamiento especial [1], tenés 2 contextos: el
> intérprete de python (que si no usaras r'' querría convertir \\ en \),
> y el intérprete de las regex, que le agrega su propio significado a \
> (por ejemplo, \( no es una secuencia de escape en py, pero en regex
> significa "es un ( literal y no el comienzo de un grupo"). Por eso si
> evaluás r"^\\" te va a mostrar "^\\\\" porque cada par de \ es una \
> escapada en el contexto de python, pero una sola en el contexto de la
> regex.
>
> ¿A qué te referís con "y no sea un salto de línea"? Si tenés una
> cadena como "\n123", esa cadena _no_ empieza con \; empieza con "\n":
> es un solo caracter aunque uses 2 para escribirlo. Sí empieza con \ la
> cadena r"\n123" porque ahí le decís "no uses el significado especial
> de \, ponela literalmente".
>
> TL;DR: r"^\\" y r"\\$"
>
> [1] Pero... ¿acá hay un bug en el intérprete? Probé escribir r"\" y me
> tira error de sintaxis... ¿cómo hacés si querés usar r'' y que termine
> en \?
>
> 2018-02-11 14:57 GMT-03:00 emanuel sandoval <davidemanuelsandoval en gmail.
com>:
>> Hola, me gastaría saber cómo hacer para identificar cuándo una cadena
>> comienza con un backslash (\) y no sea un salto de línea. También quiero
>> saber como hacerlo para identificar cuándo ese caracter está al final de
una
>> cadena.
>>
>> He intentado usar expresiones regulares tales como r"^\", y algo simares
con
>> los métodos de String, pero sencillamente no me funciona.
>>
>> Soy muy nuevo en expresiones regulares, muchas gracias.
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar


------------------------------

Message: 4
Date: Mon, 12 Feb 2018 08:34:42 -0300
From: Facundo Batista <facundobatista en gmail.com>
To: Python Argentina <pyar en python.org.ar>
Subject: Re: [pyar] Backslash en cadenas
Message-ID:
        <CAM09pzR7pXp5f2SHy1=ya0GBTQuvdiOp=eOM3-w9KSRrjk0DuA en mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

El 11 de febrero de 2018, 18:13, Tordek <kedrot en gmail.com> escribió:

> [1] Pero... ¿acá hay un bug en el intérprete? Probé escribir r"\" y me
> tira error de sintaxis... ¿cómo hacés si querés usar r'' y que termine
> en \?

No es un bug, es una limitación intrínseca de los literales "raw". De
la documentación:

  Specifically, a raw literal cannot end in a single backslash (since
the backslash would escape the following quote character).

https://docs.python.org/3/reference/lexical_analysis.
html#string-and-bytes-literals

Slds,

--
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


------------------------------

Message: 5
Date: Mon, 12 Feb 2018 08:36:39 -0300
From: Facundo Batista <facundobatista en gmail.com>
To: Python Argentina <pyar en python.org.ar>
Subject: Re: [pyar] Backslash en cadenas
Message-ID:
        <CAM09pzRd9BkTTw-5y0HLe36kpwX2xDfikwKMfsSGGnn9hGF34g en mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"

El 11 de febrero de 2018, 14:57, emanuel sandoval
<davidemanuelsandoval en gmail.com> escribió:

> Hola, me gastaría saber cómo hacer para identificar cuándo una cadena
> comienza con un backslash (\) y no sea un salto de línea. También quiero
> saber como hacerlo para identificar cuándo ese caracter está al final de
una
> cadena.

Verificando si la cadena arranca o termina con \, sin confundirse con
<enter>:

>>> "\\foo".startswith("\\")
True
>>> "\nfoo".startswith("\\")
False
>>> "foo\\".endswith("\\")
True
>>> "foo\n".endswith("\\")
False

Slds.

--
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


------------------------------

Subject: Pié de página del digest

_______________________________________________
pyar mailing list
pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/


------------------------------

Fin de Resumen de pyar, Vol 96, Envío 12
*****************************************
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180212/3e233948/attachment.html>


Más información sobre la lista de distribución pyar