2016-10-01 1 views
0

J'utilise ce code dans l'environnement ArcGIS pour extraire le chemin de fichier des géodatabases dans plusieurs dossiers.Comment extraire des chaînes à une position particulière en utilisant os.sep?

gdbpath = path.split(featureclass)[0] 
pathname = gdbpath.split(os.sep) 
print pathname 

Result: 
['D:', 'QAQC', 'Imagery', 'GeographyScan', 'Chile', 'SNGM_Chile_Topography.gdb'] 
['D:', 'QAQC', 'Imagery', 'GeologyScan', 'Chile', 'Gloria', 'CODELCO_Chile_AlterationMap.gdb'] 
['D:', 'QAQC', 'Imagery', 'GeologyScan', 'Chile', 'Gloria', 'CODELCO_Chile_GeologicalMap.gdb'] 
['D:', 'QAQC', 'Imagery', 'GeologyScan', 'Chile', 'Gloria', 'CODELCO_Chile_SurfaceExplorationMap.gdb'] 

De ce résultat je veux la quatrième corde (GeographyScan, GeologyScan) seul pour faire autre processus. Est-il possible d'extraire cela?

+0

Vous pouvez garder les chemins tels qu'ils sont, et accéder au 4ème élément où cela est nécessaire, ou vous pouvez 'fourths = [x [3] pour x dans les chemins]' –

+0

Désolé d'être naïf. Mais dois-je déclarer quatrs = [x [3] pour x dans pathname] comme une ligne séparée? J'ai essayé de dire "Chaîne index hors de portée" – saravanaganesh18

+0

En fait, ce n'est pas clair ce que votre entrée est. –

Répondre

1

Trop long pour commenter. Les deux premières lignes sont de réassembler votre chaîne. Le résultat n'est pas généralisé pour tous les chemins vers le gdb, mais obtient seulement la position désirée.

>>> p = ['D:', 'QAQC', 'Imagery', 'GeographyScan', 'Chile', 'SNGM_Chile_Topography.gdb'] 
>>> pth = "".join(["{}/".format(i) for i in p])[:-1] 
>>> pth 
'D:/QAQC/Imagery/GeographyScan/Chile/SNGM_Chile_Topography.gdb' 
>>> # Now that it is reassembled for testing path separators, split the string 
>>> ps = os.path.split(pth)[0] 
>>> sub = ps.split("/") 
>>> sub[3] 
'GeographyScan' 
>>> sub 
['D:', 'QAQC', 'Imagery', 'GeographyScan', 'Chile'] 
>>> s = "/".join((i) for i in sub[:4]) 
>>> 
>>> s 
'D:/QAQC/Imagery/GeographyScan' 

Si vous voulez juste la 3ème tranche, puis juste obtenir, si vous voulez que le chemin jusqu'à et y compris vous pouvez simplement rejoindre.

Je l'ai présenté sous une forme verbeuse afin que la procédure peut être vu. Évidemment, vous pouvez assembler les raccourcis nécessaires.

+0

Merci beaucoup mon pote. Travaillé parfaitement. – saravanaganesh18