Saltar al contenido

Cómo dividir texto attribute por caracteres en QGIS?

Te recomendamos que revises esta solución en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

Sí tu puedes.

Utilice la calculadora de campo con la siguiente expresión:

left( "Name", strpos( "Name" ,'-'))

La función strpos() devolverá la posición de índice del primer carácter ‘-‘ y la función left() “recorta” el string antes de esa posición.

ingrese la descripción de la imagen aquí

Puede utilizar la calculadora de campo con la siguiente expresión:

string_to_array("Nombre", ' ')

ingrese la descripción de la imagen aquí

La función string_to_array() se divide string en una array utilizando el delimitador suministrado.

Si desea una cierta posición de la array, puede agregar la posición y devolverá el valor. como esto:

string_to_array("Nombre", ' ')[2]

ingrese la descripción de la imagen aquí

Posible solución mediante PyQGIS.

Supongamos que hay una capa de puntos llamada "some_points" con su attribute tabla, vea la imagen de abajo.

aporte

Proceder con Plugins > Python Console > Show Editor y pegue el script a continuación

from PyQt5.QtCore import QVariant

layer = iface.activeLayer()
if not layer.isValid():
    print("Layer failed to load!")

layer_provider = layer.dataProvider()
layer_provider.addAttributes([QgsField("Test", QVariant.String)])
layer.updateFields()

features=layer.getFeatures()

layer.startEditing()

for f in features:
    attrs = 2: f['info'].split('-')[0]
    layer_provider.changeAttributeValues(f.id(): attrs)
layer.commitChanges()

python_console

La salida estará buscando

resultado


Referencias:

  • Tutorial QGIS Python: Cómo Agregar/Eliminar Campo y Actualizar el Valor del Atributo
  • Libro de recetas para desarrolladores de PyQGIS

Te mostramos reseñas y calificaciones

Si te animas, tienes la opción de dejar una noticia acerca de qué le añadirías a esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *