Python orientado a objetos: archivos y cadenas
Instrumentos de cuerda
Las cadenas son los tipos de datos más populares utilizados en todos los lenguajes de programación. ¿Por qué? Porque nosotros, entendemos el texto mejor que los números, entonces al escribir y hablar usamos texto y palabras, de manera similar también en programación usamos cadenas. En la cadena, analizamos el texto, analizamos la semántica del texto y hacemos minería de datos, y todos estos datos son texto consumido por humanos. La cadena en Python es inmutable.
Manipulación de cuerdas
En Python, la cadena se puede marcar de varias formas, utilizando comillas simples ('), comillas dobles (“) o incluso comillas triples (' '') en el caso de cadenas de varias líneas.
>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')
La manipulación de cadenas es muy útil y muy utilizada en todos los idiomas. A menudo, los programadores deben analizar las cadenas y examinarlas de cerca.
Las cadenas se pueden iterar (carácter por carácter), dividir o concatenar. La sintaxis es la misma que para las listas.
La clase str tiene numerosos métodos para facilitar la manipulación de cadenas. Los comandos dir y help brindan orientación al intérprete de Python sobre cómo usarlos.
A continuación, se muestran algunos de los métodos de cadena más utilizados.
No Señor. | Método y descripción |
---|---|
1 | isalpha() Comprueba si todos los caracteres son alfabetos |
2 | isdigit() Comprueba los caracteres de los dígitos |
3 | isdecimal() Comprueba los caracteres decimales |
4 | isnumeric() comprueba los caracteres numéricos |
5 | find() Devuelve el índice más alto de subcadenas |
6 | istitle() Comprobaciones de cadenas con título |
7 | join() Devuelve una cadena concatenada |
8 | lower() devuelve cadena en minúsculas |
9 | upper() devuelve cadena en mayúsculas |
10 | partion() Devuelve una tupla |
11 | bytearray() Devuelve una matriz de un tamaño de byte dado |
12 | enumerate() Devuelve un objeto enumerado |
13 | isprintable() Comprueba el carácter imprimible |
Intentemos ejecutar un par de métodos de cadena,
>>> str1 = 'Hello World!'
>>> str1.startswith('h')
False
>>> str1.startswith('H')
True
>>> str1.endswith('d')
False
>>> str1.endswith('d!')
True
>>> str1.find('o')
4
>>> #Above returns the index of the first occurence of the character/substring.
>>> str1.find('lo')
3
>>> str1.upper()
'HELLO WORLD!'
>>> str1.lower()
'hello world!'
>>> str1.index('b')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
str1.index('b')
ValueError: substring not found
>>> s = ('hello How Are You')
>>> s.split(' ')
['hello', 'How', 'Are', 'You']
>>> s1 = s.split(' ')
>>> '*'.join(s1)
'hello*How*Are*You'
>>> s.partition(' ')
('hello', ' ', 'How Are You')
>>>
Formato de cadena
En Python 3.x, el formato de las cadenas ha cambiado, ahora es más lógico y más flexible. El formateo se puede hacer usando el método format () o el signo% (estilo antiguo) en la cadena de formato.
La cadena puede contener texto literal o campos de reemplazo delimitados por llaves {} y cada campo de reemplazo puede contener el índice numérico de un argumento posicional o el nombre de un argumento de palabra clave.
sintaxis
str.format(*args, **kwargs)
Formateo básico
>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'
El siguiente ejemplo permite reorganizar el orden de visualización sin cambiar los argumentos.
>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'
Relleno y alineación de cadenas
Un valor se puede rellenar a una longitud específica.
>>> #Padding Character, can be space or special character
>>> '{:12}'.format('PYTHON')
'PYTHON '
>>> '{:>12}'.format('PYTHON')
' PYTHON'
>>> '{:<{}s}'.format('PYTHON',12)
'PYTHON '
>>> '{:*<12}'.format('PYTHON')
'PYTHON******'
>>> '{:*^12}'.format('PYTHON')
'***PYTHON***'
>>> '{:.15}'.format('PYTHON OBJECT ORIENTED PROGRAMMING')
'PYTHON OBJECT O'
>>> #Above, truncated 15 characters from the left side of a specified string
>>> '{:.{}}'.format('PYTHON OBJECT ORIENTED',15)
'PYTHON OBJECT O'
>>> #Named Placeholders
>>> data = {'Name':'Raghu', 'Place':'Bangalore'}
>>> '{Name} {Place}'.format(**data)
'Raghu Bangalore'
>>> #Datetime
>>> from datetime import datetime
>>> '{:%Y/%m/%d.%H:%M}'.format(datetime(2018,3,26,9,57))
'2018/03/26.09:57'
Las cadenas son Unicode
Cadenas como colecciones de caracteres Unicode inmutables. Las cadenas Unicode brindan la oportunidad de crear software o programas que funcionan en todas partes porque las cadenas Unicode pueden representar cualquier carácter posible, no solo los caracteres ASCII.
Muchas operaciones de E / S solo saben cómo tratar con bytes, incluso si el objeto bytes se refiere a datos textuales. Por tanto, es muy importante saber cómo intercambiar bytes y Unicode.
Conversión de texto a bytes
La conversión de una cadena en un objeto de byte se denomina codificación. Existen numerosas formas de codificación, las más comunes son: PNG; JPEG, MP3, WAV, ASCII, UTF-8, etc. Además, esta (codificación) es un formato para representar audio, imágenes, texto, etc. en bytes.
Esta conversión es posible a través de encode (). Toma la técnica de codificación como argumento. De forma predeterminada, utilizamos la técnica 'UTF-8'.
>>> # Python Code to demonstrate string encoding
>>>
>>> # Initialising a String
>>> x = 'TutorialsPoint'
>>>
>>> #Initialising a byte object
>>> y = b'TutorialsPoint'
>>>
>>> # Using encode() to encode the String >>> # encoded version of x is stored in z using ASCII mapping
>>> z = x.encode('ASCII')
>>>
>>> # Check if x is converted to bytes or not
>>>
>>> if(z==y):
print('Encoding Successful!')
else:
print('Encoding Unsuccessful!')
Encoding Successful!
Converting bytes to text
La conversión de bytes a texto se llama decodificación. Esto se implementa mediante decode (). Podemos convertir una cadena de bytes en una cadena de caracteres si sabemos qué codificación se utiliza para codificarla.
Entonces, codificar y decodificar son procesos inversos.
>>>
>>> # Python code to demonstrate Byte Decoding
>>>
>>> #Initialise a String
>>> x = 'TutorialsPoint'
>>>
>>> #Initialising a byte object
>>> y = b'TutorialsPoint'
>>>
>>> #using decode() to decode the Byte object
>>> # decoded version of y is stored in z using ASCII mapping
>>> z = y.decode('ASCII')
>>> #Check if y is converted to String or not
>>> if (z == x):
print('Decoding Successful!')
else:
print('Decoding Unsuccessful!') Decoding Successful!
>>>
E / S de archivos
Los sistemas operativos representan los archivos como una secuencia de bytes, no como texto.
Un archivo es una ubicación con nombre en el disco para almacenar información relacionada. Se utiliza para almacenar datos de forma permanente en su disco.
En Python, una operación de archivo se realiza en el siguiente orden.
- Abrir un archivo
- Leer o escribir en un archivo (operación) Abrir un archivo
- Cierre el archivo.
Python envuelve el flujo de bytes entrante (o saliente) con llamadas de decodificación (o codificación) apropiadas para que podamos tratar directamente con objetos str.
Abrir un archivo
Python tiene una función incorporada open () para abrir un archivo. Esto generará un objeto de archivo, también llamado identificador, ya que se usa para leer o modificar el archivo en consecuencia.
>>> f = open(r'c:\users\rajesh\Desktop\index.webm','rb')
>>> f
<_io.BufferedReader name='c:\\users\\rajesh\\Desktop\\index.webm'>
>>> f.mode
'rb'
>>> f.name
'c:\\users\\rajesh\\Desktop\\index.webm'
Para leer texto de un archivo, solo necesitamos pasar el nombre del archivo a la función. El archivo se abrirá para su lectura y los bytes se convertirán a texto utilizando la codificación predeterminada de la plataforma.