Inicio / Blog / Python / Python String Parsing Tutorial para String to Sequence

Python String Parsing Tutorial para String to Sequence

Resumir con ChatGPT

Python ofrece una variedad de opciones para trabajar con cadenas. En esta entrada de blog, primero introduciremos los fundamentos del análisis sintáctico de cadenas de Python y explicaremos la diferencia entre cadena, indexación y secuencia de cadenas.

Ya he utilizado mis conocimientos en 2025 para poner en marcha una herramienta que llamamos Quick Extract. También ayuda a los principiantes a crear un API de documentos con algunos documentos de ejemplo para analizar nuevos documentos.

Indexación de cadenas

En Python, un Cadena una secuencia de caracteres. Se puede acceder a estos caracteres mediante un índice, que se utiliza para 0 comienza. Permite acceder al primer, segundo y tercer carácter de una cadena:

text = "Python"
print(text[0])  # Gibt 'P' aus
print(text[1])  # Gibt 'y' aus
print(text[2])  # Gibt 't' aus

También puede utilizar índices negativos para acceder a los caracteres desde el final de la cadena:

print(text[-1])  # Gibt 'n' aus
print(text[-2])  # Gibt 'o' aus
print(text[-3])  # Gibt 'h' aus

Secuencia de cadenas

Una secuencia de cadenas es una parte de una cadena que se especifica mediante un índice inicial y final. En Python, puedes utilizar la llamada sintaxis de corte para acceder a partes de una cadena:

pythonCopiar códigotext = "Python"
print(text[0:3])  # Gibt 'Pyt' aus
print(text[1:4])  # Gibt 'yth' aus
print(text[:2])   # Gibt 'Py' aus (ohne Anfangsindex entspricht es Index 0)
print(text[3:])   # Gibt 'hon' aus (ohne Endindex entspricht es Index + 1)

La sintaxis de corte también funciona con índices negativos:

print(text[-3:-1])  # Gibt 'ho' aus
print(text[:-2])    # Gibt 'Pyth' aus

Para resumir las diferencias entre indexación de cadenas y secuencia de cadenas: La indexación de cadenas se refiere al acceso a un único carácter de una cadena, mientras que la secuencia de cadenas se refiere al acceso a parte de la cadena.

Caso práctico del método split en Python

Números de versión y hash de confirmación

En muchas situaciones, como cuando trabajamos con proyectos de software, a menudo necesitamos extraer información de cadenas combinadas. Tomemos como ejemplo una cadena que contiene un número de versión y un hash de confirmación: "2.7.0_bf4fda703454". Para separar esta información, podemos utilizar la función split()-en Python.

version_hash = "2.7.0_bf4fda703454"
version_hash_list = version_hash.split("_")

El resultado es una lista de cadenas con el siguiente aspecto:

['2.7.0', 'bf4fda703454']

Aquí la cadena se separa en cada guión bajo. Si desea que la separación se produzca sólo después del primer guión bajo, puede utilizar el método split() con el parámetro opcional 1 uso:

version_hash.split("_", 1)

Si está seguro de que la cadena contiene un guión bajo, puede incluso descomprimir las partes izquierda y derecha en variables separadas:

lhs, rhs = version_hash.split("_", 1)
print(lhs)  # Gibt '2.7.0' aus
print(rhs)  # Gibt 'bf4fda703454' aus

Una alternativa a la split()-método es el uso de partition(). El uso es similar al del ejemplo anterior, salvo que aquí se devuelven tres componentes en lugar de dos. La principal ventaja de este método es que no falla si la cadena no contiene el separador.

En general, el split()-es una forma práctica de dividir y procesar información combinada en Python. En nuestro ejemplo, podríamos separar fácilmente el número de versión y el hash de confirmación.

Análisis sintáctico de cadenas en Python con expresiones regulares (regex)

Descomponga texto con grupos regex con nombre en Python y sopese las ventajas y desventajas frente a funciones convencionales como la indexación de cadenas en Python, la secuenciación o el método de división.

Cuando tenemos cadenas complejas que necesitan descomponerse debido a patrones o a una puntuación difícil, las expresiones regulares pueden ayudar a reconocer y descomponer estos patrones.

A continuación se muestra un ejemplo de código para el análisis sintáctico de cadenas con grupos regex con nombre en Python:

import re
# Beispieltext
text = "Max Mustermann, Alter: 30 Jahre, Stadt: Berlin"
# Regulärer Ausdruck mit benannten Gruppen
pattern_text = r'(?P<name>[A-Za-zäöüÄÖÜß\s]+),\s+Alter:\s+(?P<age>\d+)\s+Jahre,\s+Stadt:\s+(?P<city>[A-Za-zäöüÄÖÜß\s]+)'
# Kompilieren des regulären Ausdrucks
pattern = re.compile(pattern_text)
# Suche nach Übereinstimmungen im Text
match = pattern.match(text)
# Überprüfen, ob eine Übereinstimmung gefunden wurde
if match:
    # Extrahieren der benannten Gruppen
    name = match.group('name')
    age = match.group('age')
    city = match.group('city')
    # Ausgabe der extrahierten Informationen
    print(f"Name: {name}")
    print(f"Alter: {age}")
    print(f"Stadt: {city}")
else:
    print("Keine Übereinstimmung gefunden.")

En este ejemplo, tenemos un texto de ejemplo con el nombre, la edad y la ciudad de una persona. Utilizamos una expresión regular con grupos nombrados para extraer la información relevante del texto. Los grupos se denominan como sigue

  • name - para el nombre de la persona
  • age - por la edad de la persona
  • city - para la ciudad en la que vive la persona

Una vez compilada la expresión regular, buscamos coincidencias en el texto. Si se encuentra una coincidencia, se extraen los grupos nombrados y se emite la información extraída.

Ventajas

  1. Flexibilidad - Las expresiones regulares ofrecen un alto grado de flexibilidad en el análisis de textos y pueden reconocer patrones complejos.
  2. Compactas - Las expresiones regulares suelen ser más breves y concisas que los métodos convencionales.
  3. Grupos con nombre - Con los grupos con nombre podemos identificar y extraer fácilmente partes del patrón.

Desventajas

  1. Curva de aprendizaje - Las expresiones regulares tienen una curva de aprendizaje más pronunciada y suelen ser más difíciles de leer y entender que los métodos convencionales.
  2. Aplicabilidad limitada - Las expresiones regulares no son adecuadas para documentos profundamente anidados como HTML, XML o JSON.

Método de indexación, secuenciación o división de cadenas de Python: Las funciones convencionales como el método de indexación, secuenciación o división de cadenas de Python son muy adecuadas para tareas sencillas de análisis de texto en las que la estructura de la cadena de caracteres es clara y simple.

Ventajas

  1. Simplicidad - Los métodos convencionales son fáciles de entender y aplicar.
  2. Legibilidad - El código es más fácil de leer y comprender para los desarrolladores familiarizados con Python.

Desventajas

  1. Flexibilidad limitada - Estos métodos ofrecen menos flexibilidad a la hora de analizar patrones textuales complejos.
  2. Código más largo - El código puede hacerse más largo y confuso al intentar reconocer y descomponer patrones complejos.

Automatización Python Regex

En este ejemplo mostramos cómo utilizar el SDK de Konfuzio para automatizar la creación de regex. Utilizamos el SDK para crear un tokenizador regex personalizado para la etiqueta "ContractDate" para crear. Encontrará más información en documentación técnica y en un más artículos del blog encontrar.

from konfuzio_sdk.data import Project
from konfuzio_sdk.tokenizer.regex import RegexTokenizer
from konfuzio_sdk.tokenizer.base import ListTokenizer
# Ersetzen Sie YOUR_PROJECT_ID und YOUR_CATEGORY_ID durch die entsprechenden IDs Ihres Projekts und Ihrer Kategorie.
my_project = Project(id_=YOUR_PROJECT_ID)
category = my_project.get_category_by_id(id_=YOUR_CATEGORY_ID)
tokenizer = ListTokenizer(tokenizers=[])
label = my_project.get_label_by_name("ContractDate")
# Finden von Regex-Ausdrücken, die mit Vorkommen des Labels "ContractDate" coincidir
for regex in label.find_regex(category=category):
    regex_tokenizer = RegexTokenizer(regex=regex)
    tokenizer.tokenizers.append(regex_tokenizer)
# Utiliza el tokenizador regex creado para crear anotaciones para cada cadena coincidente en un documento.
# Sustituye YOUR_DOCUMENT_ID por el ID correspondiente de tu documento.
documento = mi_proyecto.get_documento_por_id(YOUR_DOCUMENT_ID)
tokenizer.tokenize(documento)

En este fragmento de código:

  1. Vamos a importar las clases y funciones necesarias del SDK Konfuzio.
  2. Vamos a crear un Project-objeto especificando el ID del proyecto.
  3. ¿Conseguimos un Category-objeto especificando el ID de la categoría.
  4. Vamos a crear un ListTokenizer.
  5. ¿Conseguimos el Label-objeto para la etiqueta "ContractDate„.
  6. Busquemos expresiones regex que empiecen con apariciones de la etiqueta "ContractDate" en la categoría de datos de formación.
  7. Añadamos cada expresión regex encontrada como un RegexTokenizer el ListTokenizer añadido.
  8. Utilicemos el tokenizador regex creado para crear anotaciones para cada cadena coincidente en un documento. Para ello, especificamos el ID del documento y llamamos a la función tokenize()-del tokenizador.

Una vez creado el tokenizador, puede utilizarlo para generar automáticamente expresiones regex para la etiqueta "ContractDate" en tus documentos y crear anotaciones para ellos.

¿Le ha resultado útil esta página?

Gracias por sus comentarios.

¿Podría darme su opinión? (anónimo)

Desarrollamos software de inteligencia artificial para empresas y evitamos deliberadamente los molestos banners publicitarios. A través de nuestros artículos, documentamos temas que nos ocupan e interesan y también financian nuestro pan de cada día.

Como nuestro contenido es gratuito, sus comentarios son nuestro elogio.

Cada autor lee personalmente tus comentarios anónimos, aunque la IA podría automatizarlos, e integra las sugerencias constructivas directamente en la siguiente revisión o las utiliza como inspiración para el siguiente artículo.



    </artículo
    • Florian Zyprian
      (Autor)

      Como Director Técnico de Helm & Nagel GmbH, la empresa que está detrás del Konfuzio.

    es_ESES