如何在使用os.sep时在特定位置提取字符串?

时间:2016-10-01 02:31:01

标签: python-2.7 arcpy

我在ArcGIS环境中使用此代码来提取多个文件夹中地理数据库的文件路径。

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']

从这个结果我想要第四个字符串(GeographyScan,GeologyScan)单独做进一步的处理。有可能提取这个吗?

1 个答案:

答案 0 :(得分:1)

评论太长了。前两行是重新组合你的字符串。结果并非针对gdb的所有路径进行推广,而只是获取所需的位置。

>>> 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'

如果您只想要第3个切片,那么只需要它,如果您想要路径,包括您可以重新加入。

我已经以详细的形式提出了这个,所以可以看到程序。显然你可以组装必要的快捷方式。