Comment dire "\"ogc_fid\"=482 AND name=\"hello world\""? Ici, il est indiqué que ce n'est pas disponible en python: qgis.org/api/… . Peut-être connaissez-vous un moyen de contourner cette limitation?
Jenia Ivanov
2
Gardez à l'esprit que les noms de champ doivent être entre guillemets doubles, les valeurs de chaîne entre guillemets simples et les nombres n'ont pas besoin de guillemets. Dans votre exemple: "\"ogc_fid\"=482 AND \"name\"='hello world'". BTW, le lien que vous avez inclus dans votre commentaire indique en fait que l'attribut statique BinaryOperatorTextn'est pas disponible dans les liaisons Python, mais les opérateurs fonctionnent QgsExpression, même s'ils sont utilisés via des liaisons Python.
Germán Carrillo
@ GermánCarrillo J'utilise votre méthode ci-dessus mais je n'arrive pas à la renvoyer de valeurs, malgré le fait d'avoir copié et collé une valeur connue à rechercher. La colonne contient des chaînes, j'ai donc utilisé expr = QgsExpression("\"police_ref\" = 'P0580996'"). J'ai essayé d'ajouter un caractère de rupture au terme de recherche (pour les guillemets simples) mais cela ne fait aucune différence. Fait intéressant, si j'ouvre la table attributaire que j'interroge et que j'utilise le générateur d'expressions là-bas, il fait une sélection si la police_ref que j'utilise comme exemple se trouve dans la toute première ligne, mais pas autrement
Alex
@ GermánCarrillo désolé, peu importe, je ne suis pas sûr de ce que j'ai fait différemment mais je peux le faire pour sélectionner des fonctionnalités maintenant! Pour les autres lecteurs, vous n'avez pas besoin d'un caractère de rupture pour les guillemets simples
Alex
6
Cela a fonctionné pour moi sur la console QGIS Python
Bienvenue dans GIS SE. En tant que nouvel utilisateur, veuillez faire le Tour . La réponse existante (et acceptée) est beaucoup plus complète. Comment cela améliore-t-il cela? Généralement, le moyen de gagner des points de réputation est de répondre à des questions sans réponse , mais une nouvelle réponse complète à une question de trois ans serait la bienvenue si elle résout spécifiquement un problème avec la solution précédente (auquel cas, le problème doit certainement être mentionné) .
Vince
2
Il suffit de le tester dans l'interface graphique: "Select by Expression". Si cela fonctionne, vous pouvez le coller dans votre code Python entouré de guillemets doubles "".
exp =QgsExpression("ogc_fid=482")
Si vous comparez à une chaîne, vous pouvez ajouter un guillemet simple ''.
exp =QgsExpression("ogc_fid='482'")
C'est le même principe en python, cela peut faire la différence entre les guillemets doubles et les guillemets simples.
"\"ogc_fid\"=482 AND name=\"hello world\""
? Ici, il est indiqué que ce n'est pas disponible en python: qgis.org/api/… . Peut-être connaissez-vous un moyen de contourner cette limitation?"\"ogc_fid\"=482 AND \"name\"='hello world'"
. BTW, le lien que vous avez inclus dans votre commentaire indique en fait que l'attribut statiqueBinaryOperatorText
n'est pas disponible dans les liaisons Python, mais les opérateurs fonctionnentQgsExpression
, même s'ils sont utilisés via des liaisons Python.expr = QgsExpression("\"police_ref\" = 'P0580996'")
. J'ai essayé d'ajouter un caractère de rupture au terme de recherche (pour les guillemets simples) mais cela ne fait aucune différence. Fait intéressant, si j'ouvre la table attributaire que j'interroge et que j'utilise le générateur d'expressions là-bas, il fait une sélection si la police_ref que j'utilise comme exemple se trouve dans la toute première ligne, mais pas autrementCela a fonctionné pour moi sur la console QGIS Python
la source
Il suffit de le tester dans l'interface graphique: "Select by Expression". Si cela fonctionne, vous pouvez le coller dans votre code Python entouré de guillemets doubles "".
Si vous comparez à une chaîne, vous pouvez ajouter un guillemet simple ''.
C'est le même principe en python, cela peut faire la différence entre les guillemets doubles et les guillemets simples.
la source