Compartir tecnología

Capítulo 6 Objetos de cadena y operaciones de corte

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Tabla de contenido

Capítulo 6 Objetos de cadena y operaciones de corte

6.1 Objeto de cadena

6.2 Métodos de uso común en caracteres.

6.3 Operación de corte

Capítulo 6 Objetos de cadena y operaciones de corte

6.1 Objeto de cadena

Cadena: una cadena que consta de varios caracteres.

Caracteres: símbolos visibles a simple vista.

Bytes: invisibles a simple vista

Cómo Python define cadenas:

comillas simples comillas dobles comillas triples str()

6.2 Métodos de uso común en caracteres.

 >>> dir(s)
 ['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

capitalizar ------- Poner la primera letra de la cadena en mayúscula

 >>> s
 'this is a string'
 >>> s.capitalize()
 'This is a string'

center(width, fillchar=' ') ------ Centrar la cuerda según la longitud dada y alinearla en el centro

rjust --------- alineado a la derecha

Sólo ------ alineación izquierda

 >>> help(s.center)
 Help on built-in function center:
 ​
 center(width, fillchar=' ', /) method of builtins.str instance
     Return a centered string of length width.
 ​
     Padding is done using the specified fill character (default is a space).
 ​
 >>> s.center(40)
 '            this is a string            '
 >>> s.center(40,"*")
 '************this is a string************'
 >>> s.rjust(40)
 '                        this is a string'
 >>> s.ljust(40)
 'this is a string                        '
 >>> s.ljust(40,"*")
 'this is a string************************'
 >>> s.rjust(40,"*")
 '************************this is a string'

count --------- cuenta el número de veces que aparece un carácter en una cadena

 >>> s
 'this is a string'
 >>> s.count("s")
 3
 >>> s.count("is")
 2

termina con ------- Determinar si la cadena termina con XXX

comienza con ------- Determina si la cadena comienza con XXX

 >>> s.endswith("g")
 True
 >>> s.endswith("ing")
 True
 >>> s.endswith("f")
 False
 >>> s.startswith("t")
 True
 >>> s.startswith("f")
 False

índice ------ La posición donde el carácter o cadena buscado aparece por primera vez en la cadena. Si no existe, se generará una excepción (informe de error).

rindex ------- Buscar de derecha a izquierda, la posición donde el carácter o cadena que se busca aparece por primera vez en la cadena (equivalente a la última aparición del carácter o cadena que se busca de izquierda a derecha en la cadena) ubicación ), si no existe, lanza una excepción (informa un error)

 >>> s
 'this is a string'
 >>> s.index("s")
 3
 >>> s.index("is")
 2
 >>> s.index("f")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: substring not found
 >>> s.index(" ")
 4
 >>> s.rindex("s")
 10
 >>> s.rindex("f")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: substring not found

buscar ------- La posición de la primera aparición del carácter o cadena que se busca en la cadena. Si no existe, se devuelve -1.

rfind----- Buscar de derecha a izquierda, la posición de la primera aparición del carácter o cadena que se busca en la cadena (equivalente a la posición de la última aparición del carácter o cadena en la cadena encontrada de izquierda a derecha), devuelve -1 si no existe

 >>> s
 'this is a string'
 >>> s.find("s")
 3
 >>> s.find("f")
 -1
 >>> s.rfind("f")
 -1
 >>> s.rfind("s")
 10

codificar ----- método para convertir cadenas a bytes en python3, método decode() para convertir bytes a cadenas (método en bytes)

 >>> s
 'this is a string'
 >>> s.encode()
 b'this is a string'
 >>> d = s.encode()
 >>> d
 b'this is a string'
 >>> type(d)
 <class 'bytes'>
 >>> d
 b'this is a string'
 >>> d.decode()
 'this is a string'
 >>> ss = d.decode()
 >>> ss
 'this is a string'
 >>> type(ss)
 <class 'str'>

formato ------ formatear cadena, concatenar cadenas

isupper ------ Determina si la cadena tiene todas letras mayúsculas

islower ----- ------ Determinar si la cadena tiene todas letras minúsculas

>>> s.isupper()
False
>>> s.islower()
False

istitle ----- Determinar si es un título

>>> s.istitle()
False
>>> ss = "This Is A Dog"
>>> ss.istitle()
True

isspace ----- No se usa comúnmente para determinar si es un espacio.

>>> sss = "       "
>>> sss.isspace()
True
>>> ss
'This Is A Dog'
>>> ss.isspace()
False

isdigit ------ Determinar si es un número

>>> sss = "123234344"
>>> sss.isdigit()
True
>>> ss
'This Is A Dog'
>>> ss.isdigit()
False
>>> sss = "1233443gggg"
>>> sss.isdigit()
False

isalnum ------ determina si son letras y números (alfanuméricos)

>>> help(s.isalnum)
Help on built-in function isalnum:

isalnum() method of builtins.str instance
    Return True if the string is an alpha-numeric string, False otherwise.

    A string is alpha-numeric if all characters in the string are alpha-numeric and
    there is at least one character in the string.

>>> sss
'1233443gggg'
>>> sss.isalnum()
True
>>> ss
'This Is A Dog'
>>> ss.isalnum()
False

isalpha ------ determina si es una letra

título ----- Convertir cadena al formato de título

>>> s
'This is a string'
>>> s.istitle()
False
>>> s.title()
'This Is A String'
>>> sss = s.title()
>>> sss
'This Is A String'
>>> sss.istitle()
True

superior ------- Convertir cadena a mayúsculas

inferior ------- Convertir cadena a minúsculas

>>> s
'This is a string'
>>> s.lower()
'this is a string'
>>> s.upper()
'THIS IS A STRING'

dividir ----- Divide la cadena según el símbolo especificado y el valor de retorno es una lista

>>> s
'This is a string'
>>> s.split(" ")
['This', 'is', 'a', 'string']
>>> l = s.split(" ")
>>> l
['This', 'is', 'a', 'string']
>>> type(l)
<class 'list'>
>>> l = s.split("s")
>>> l
['Thi', ' i', ' a ', 'tring']

unirse ------ concatena un objeto iterable en una cadena de acuerdo con el formato especificado

>>> ls = ["A","B","c","d"]
>>> type(ls)
<class 'list'>
>>> ss = " ".join(ls)
>>> ss
'A B c d'
>>> type(ss)
<class 'str'>
>>> ss = "*".join(ls)
>>> ss
'A*B*c*d'

tira ------- eliminar espacios en ambos lados

rstrip------ borrar los espacios a la derecha

lstrip -------- borrar espacios a la izquierda

>>> ss = "                              hhhhhhh                                  "
>>> ss
'                              hhhhhhh                                  '
>>> ss.strip()
'hhhhhhh'
>>> ss.strip()
'hhhhhhh'
>>> ss
'                              hhhhhhh                                  '
>>> ss.rstrip()
'                              hhhhhhh'
>>> ss.lstrip()
'hhhhhhh                                  '

reemplazar ("carácter original", "nuevo carácter") ------ Reemplazar el carácter correspondiente

>>> s
'This is a string'
>>> s.replace("s","t")
'Thit it a ttring'

6.3 Operación de corte

Slice: se utiliza para separar objetos iterables (contenedores)

Reglas gramaticales:

object[start_index:end_index:step]

start_index ------- Índice inicial (posición inicial)

end_index ------ Índice final (posición final), no incluye el valor en end_index

paso ---- tamaño del paso, puede ser un número positivo o negativo, número positivo (de izquierda a derecha) número negativo (de derecha a izquierda), el valor predeterminado es 1

object[:]  ----- 切割的是一个完整的对象
object[start_index:]  ------ 从start_index开始切割到最后的位置,步长为1
object[:end_index] ------ 从最开始的位置切割到end_index处,但是不包含end_index
object[start_index:end_index] ------- 从start_index开始切割到end_index处,但是不包含end_index,步长为1
object[start_index:end_index:step] ------------ 从start_index开始切割到end_index处,但是不包含end_index,步长为step  

El intervalo entre el cierre frontal y la apertura trasera.

ls = [0,1,2,3,4,5,6,7,8,9]

1. Cortar un solo valor

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[0]
0
>>> ls[-4]
6

2. Cortar el objeto completo.

>>> ls[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[::]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[::-1]  #-1 表示从右往左切割 所以是倒序
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3. start_index y end_index son números positivos

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[1:6]
[1, 2, 3, 4, 5]
>>> ls[1:6:-1]  # start_index=1 end_index = 6表示的是从1切割到6的位置,但是不包含6处的值,从左往右切割,step=-1 表示从右往左   
[]
>>> ls[6:1]
[]
>>> ls[6:1:-1]
[6, 5, 4, 3, 2]
>>> ls[:6]
[0, 1, 2, 3, 4, 5]
>>> ls[:6:-1]
[9, 8, 7]
>>> ls[6:]
[6, 7, 8, 9]
>>> ls[6::-1]
[6, 5, 4, 3, 2, 1, 0]
>>>

4. start_index y end_index son números negativos

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[-1:-6]
[]
>>> ls[-1:-6:-1]
[9, 8, 7, 6, 5]
>>> ls[-6:-1]
[4, 5, 6, 7, 8]
>>> ls[:-6]
[0, 1, 2, 3]
>>> ls[:-6:-1]
[9, 8, 7, 6, 5]
>>> ls[-6:]
[4, 5, 6, 7, 8, 9]
>>> ls[-6::-1]
[4, 3, 2, 1, 0]

5. Start_index y end_index se combinan con positivo y negativo

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[1:-6]
[1, 2, 3]
>>> ls[1:-6:-1]
[]
>>> ls[-1:6]
[]
>>> ls[-1:6:-1]
[9, 8, 7]

6. Rebanado continuo

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[:8][2:5][-1:]
[4]
ls[:8] ----- [0,1,2,3,4,5,6,7]
ls[:8][2:5]   -----   [2,3,4]
ls[:8][2:5][-1:] ----- [4]

7. Los tres parámetros de corte también pueden ser expresiones.

>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ls[2+1:3*2:7%3]
[3, 4, 5]
>>> ls[3:6:1]
[3, 4, 5]
>>> ls[2:6:2]
[2, 4]

8. Rebanar también puede cortar otros objetos.

>>> (1,2,3,4,5,6,7,8,9)[:3]
(1, 2, 3)
>>> "ABCDEFGHIJK"[::2]
'ACEGIK'
>>> for i in range(1,100)[2::3][-10:]:
...     print(i)
...
72
75
78
81
84
87
90
93
96
99

Preguntas de entrevista:

1. Si se excede el rango de subíndice al usar cortes para cortar datos, ¿se informará un error?

No se informará ningún error. Si excede el rango, se devolverá el objeto completo. Si es inconsistente, se devolverá [].

2. ¿Cómo revertir la salida de una lista en Python?

bucle inverso

[::-1]

lista.reverse()