Suite

Comment diviser un attribut de texte par caractères dans QGIS?


Est-il possible de créer une nouvelle colonne, par exemple nommée "Test" et mémoriser la première partie de la colonne "Nom" divisée par-?

Voyez ci-dessous à quoi cela devrait ressembler :


Oui, vous pouvez.

Utilisez le calculateur de champ avec l'expression suivante :

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

La fonction strpos() renverra la position d'index du premier caractère '-' et la fonction left() "rogne" la chaîne avant cette position.


Vous pouvez utiliser le calculateur de champs avec l'expression suivante :

string_to_array("Nombre",")

La fonction string_to_array() divise la chaîne en un tableau à l'aide du délimiteur fourni.

Si vous voulez une certaine position du tableau, vous pouvez ajouter la position et il renverra la valeur. comme ça:

string_to_array("Nombre",")[2]


Solution possible au moyen de PyQGIS.

Supposons qu'il existe une couche de points appelée"Des points"avec sa table attributaire, voir l'image ci-dessous.

Procéder àPlugins > Console Python > Afficher l'éditeuret collez le script ci-dessous

de PyQt5.QtCore import QVariant layer = iface.activeLayer() sinon layer.isValid(): print("La couche n'a pas pu se charger!") layer_provider = layer.dataProvider() layer_provider.addAttributes([QgsField("Test", QVariant .String)]) layer.updateFields() features=layer.getFeatures() layer.startEditing() pour f dans les fonctionnalités : attrs = {2 : f['info'].split('-')[0]} layer_provider .changeAttributeValues({f.id() : attrs}) layer.commitChanges()

La sortie sera à la recherche


Les références: