Está en la página 1de 17

AINS 1001 - Programación I

Ingeniería en Computación e Informática


Unidad 6: Procesamiento de Texto

Universidad Andrés Bello


Facultad de Ingeniería

AINS 1001 - Programación I 1/17


Procesamiento de Texto
Introducción

Hasta ahora, se ha visto cómo los tipos de datos básicos (strings, ente-
ros, reales, booleanos) y las estructuras de datos permiten representar
y manipular información compleja y abstracta en un programa.
En muchos casos la información no suele estar disponible ya organiza-
da en estructuras de datos convenientes de usar, sino en documentos
de texto.
Por ejemplo, las páginas webs son archivos de puro texto, que descri-
ben la estructura de un documento en un lenguaje llamado HTML.

AINS 1001 - Programación I 2/17


Procesamiento de Texto
Introducción

Un texto siempre es un string, que puede ser tan largo y complejo


como se desee.
El procesamiento de texto consiste en manipular strings, ya sea para
extraer información del string, para convertir un texto en otro, o para
codificar información en un string.
En Python, el tipo str provee muchos métodos convenientes para
hacer procesamiento de texto, además de las operaciones más simples
que ya aprendimos (como s + t, s[i] y s in t).

AINS 1001 - Programación I 3/17


Procesamiento de Texto
Saltos de Línea

>>> a = ’ casa \ narbol \ npatio ’


>>> a
’ casa \ narbol \ npatio ’

>>> print a
casa
arbol
patio

>>> len ( ’a \ nb \ nc ’)
5

AINS 1001 - Programación I 4/17


Procesamiento de Texto
Secciones de un string

>>> palabra = ’ cara ’

>>> palabra . replace ( ’r ’ , ’s ’)


’ casa ’

>>> palabra . replace ( ’ ca ’ , ’ pa ’)


’ para ’

>>> palabra . replace ( ’a ’ , ’e ’ , 1)


’ cera ’

>>> palabra . replace ( ’c ’ , ’ ’) . replace ( ’a ’ , ’o ’)


’ oro ’

AINS 1001 - Programación I 5/17


Procesamiento de Texto
Dividir un string por palabras

>>> oracion = ’ la voz de los 80 ’

>>> list ( oracion )


[ ’l ’ , ’a ’ , ’ ’ , ’v ’ , ’o ’ , ’z ’ , ’ ’ , ’d ’ , ’e ’ , ’ ’ , ’l ’
, ’o ’ , ’s ’ , ’ ’ , ’8 ’ , ’0 ’]

>>> oracion . split ()


[ ’ la ’ , ’ voz ’ , ’ de ’ , ’ los ’ , ’ 80 ’]

AINS 1001 - Programación I 6/17


Procesamiento de Texto
Dividir un string por separador

>>> s = ’ taca taca ’

>>> s . split ()
[ ’ taca ’ , ’ taca ’]

>>> s . split ( ’a ’)
[ ’t ’ , ’c ’ , ’ t ’ , ’c ’ , ’ ’]

>>> s . split ( ’ ac ’)
[ ’t ’ , ’a t ’ , ’a ’]

AINS 1001 - Programación I 7/17


Procesamiento de Texto
Unir una secuencia de strings

>>> a = [ ’ la ’ , ’ voz ’ , ’ de ’ , ’ los ’ , ’ 80 ’]

>>> ’ ’. join ( a )
’ la voz de los 80 ’

>>> ’ ’. join ( a )
’ lavozdelos80 ’

>>> ’ -> ’. join ( a )


’ la -> voz -> de -> los -> 80 ’

AINS 1001 - Programación I 8/17


Procesamiento de Texto
Unir una secuencia de valores (no strings)

>>> numeros = range (5)

>>> numeros
[0 , 1 , 2 , 3 , 4]

>>> map ( str , numeros )


[ ’0 ’ , ’1 ’ , ’2 ’ , ’3 ’ , ’4 ’]

>>> ’ - ’. join ( map ( str , numeros ) )


’ 0 -1 -2 -3 -4 ’

AINS 1001 - Programación I 9/17


Procesamiento de Texto
Interpolación de valores por posición

>>> s = ’ Soy {0} y vivo en {1} ’

>>> s . format ( ’ Perico ’ , ’ Valparaiso ’)


’ Soy Perico y vivo en Valparaiso ’

>>> s . format ( ’ Erika ’ , ’ Berlin ’)


’ Soy Erika y vivo en Berlin ’

>>> s . format ( ’ Wang Dawei ’ , ’ Beijing ’)


’ Soy Wang Dawei y vivo en Beijing ’

AINS 1001 - Programación I 10/17


Procesamiento de Texto
Interpolación de valores por nombre

>>> s = ’{ nombre } estudia en la { u } ’

>>> s . format ( nombre = ’ Perico ’ , u = ’ UNAB ’)


’ Perico estudia en la UNAB ’

>>> s . format ( nombre = ’ Fulana ’ , u = ’ PUCV ’)


’ Fulana estudia en la PUCV ’

>>> s . format ( u = ’ UPLA ’ , nombre = ’ Yayita ’)


’ Yayita estudia en la UPLA ’

AINS 1001 - Programación I 11/17


Procesamiento de Texto
Mayúsculas y minúsculas

>>> palabra = ’ Progra ’

>>> palabra . upper ()


’ PROGRA ’

>>> palabra . lower ()


’ progra ’

>>> palabra . swapcase ()


’ pROGRA ’

AINS 1001 - Programación I 12/17


Procesamiento de Texto
Problema : ADN

Una cadena de ADN es una secuencia de bases nitrogenadas llamadas


adenina, citosina, timina y guanina.
En un programa, una cadena se representa como un string de caracteres
’a’, ’c’, ’t’ y ’g’.
A cada cadena, le corresponde una cadena complementaria, que se ob-
tiene intercambiando las adeninas con las timinas, y las citosinas con las
guaninas:

cadena = ’cagcccatgaggcagggtg’
complemento = ’gtcgggtactccgtcccac’

AINS 1001 - Programación I 13/17


Procesamiento de Texto
Problema : ADN

Escriba la función cadena_al_azar(n) que retorne una cadena aleatoria


de ADN de largo n:
>>> cadena_al_azar (10)
’ acgtccgcct ’

>>> cadena_al_azar (10)


’ tgttcgcatt ’

Pista:
>>> from random import choice
>>> choice ( ’ atcg ’)
’t ’
>>> choice ( ’ atcg ’)
’g ’

AINS 1001 - Programación I 14/17


Procesamiento de Texto
Problema : ADN

Escriba la función complementaria(c) que entregue la cadena


complementaria de c:
>>> cadena = ’ ca g cccatgaggcagggtg ’

>>> complementaria ( cadena )


’ gtcggg t ac t cc g t cc cac ’

AINS 1001 - Programación I 15/17


Procesamiento de Texto
Problema : Reporte de promedios

Escriba un programa que haga lo siguiente:


Numero de alumnos : 3

Nombre alumno 1: Issac Newton


Ingrese notas de Issac : 6.5 6.7 6.8

Nombre alumno 2: Nikola Tesla


Ingrese notas de Nikola : 6.7 6.6

Nombre alumno 3: Albert Einstein


Ingrese notas de Albert : 6.8 7.0 6.7 7.0

El promedio de Issac es 6.67


El promedio de Nikola es 6.65
El promedio de Albert es 6.88

AINS 1001 - Programación I 16/17


Procesamiento de Texto
Problema : Cuenta de palabras

Escriba la función cuenta_palabras(oracion), que retorne un dicciona-


rio indicando cuántas veces aparece cada palabra en la oración:

>>> t = ’ El sobre , en el aula , esta sobre el pupitre . ’

>>> contar_palabras ( t )
{ ’ el ’: 3 , ’ en ’: 1 , ’ esta ’: 1 , ’ aula ’: 1 ,
’ sobre ’: 2 , ’ pupitre ’: 1}

AINS 1001 - Programación I 17/17

También podría gustarte