Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Manipulacion de caracteres en python3

Estas en el tema de Manipulacion de caracteres en python3 en el foro de Python en Foros del Web. Hola. Tengo una duda. Primero, como dice el titulo, estoy usando la version3 de python. Por lo que he leido, en esta version ya todas ...
  #1 (permalink)  
Antiguo 25/07/2013, 14:20
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 19 años, 2 meses
Puntos: 52
Manipulacion de caracteres en python3

Hola. Tengo una duda. Primero, como dice el titulo, estoy usando la version3 de python.

Por lo que he leido, en esta version ya todas las cadenas de caracteres usan unicode.

Ahora, dentro del programa que estoy haciendo hago cierta manipulacion de cadenas caracter por caracter. Y pues el unicode me ha dado mas problemas que soluciones. Afortunadamente todo fue solucionado. Pero al igual que en posts pasados, quisiera saber si esta es la forma correcta de trabajar con cadenas.

Pongo un ejemplo:

Código:
currentline = str(line.strip()) 
if len(currentline) == 0 \
or currentline[2] == '\n' \
or currentline[2] == ';':
Anterior a este codigo, tengo un for que lee una linea de texto de un archivo a la vez. Lo que hago es usar str para convertirlo a byte-string. Sin embargo, me agrega una b y un apostrofe '. Por lo tanto mi texto comienza en 2 en vez de 0.

Estoy muy acostumbrado aun a C, C++ y PHP. Entonces no se si esto sea normal... que las cadenas empiezen en 2, en vez de 0, gracias a los caracteres adicionales que se agregan.

Alguien tiene alguna sugerencia?

Saludos

PD: Oohh, lo olvidaba. el metodo split no funciona con unicode. O la verdad no se que pasa, porque si no uso str(currentline), me lanza una excepcion en donde intento usar split.
  #2 (permalink)  
Antiguo 25/07/2013, 14:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 16 años, 10 meses
Puntos: 1360
Respuesta: Manipulacion de caracteres en python3

Deberías leer sobre str vs bytes

Código Python:
Ver original
  1. # Asumo que line son bytes
  2. currentline = line.strip()
  3. # Recuerda no mezclar string y bytes
  4. if not currentline or currentline.startswith(b'$') or currentline.startswith(b'\n'):
  #3 (permalink)  
Antiguo 25/07/2013, 15:48
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 19 años, 2 meses
Puntos: 52
Respuesta: Manipulacion de caracteres en python3

Gracias por la info. En el texto que ando leyendo también lo mencionan, sin embargo si ha sido algo confuso para mi. Aun asi, leeré el texto que me pasaste.

Ahora otra duda.

La forma de abrir el archivo ("r", "rb"), afecta el tipo de objeto que leo usando el for??

Saludos
  #4 (permalink)  
Antiguo 25/07/2013, 15:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 16 años, 10 meses
Puntos: 1360
Respuesta: Manipulacion de caracteres en python3

Si, especialmente si le indicas un encoding.

http://docs.python.org/3/library/fun...ight=open#open
  #5 (permalink)  
Antiguo 25/07/2013, 17:05
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 19 años, 2 meses
Puntos: 52
Respuesta: Manipulacion de caracteres en python3

Excelente. Muchas gracias.

Etiquetas: python3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:31.