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

How to extract strings at particular position while using os.sep?

我在 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)单独进行进一步处理。可以提取这个吗?

评论太长了。前两行是重新assemble 你的字符串。结果并未针对 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 个片段,那么就得到它,如果你想要直到并包含的路径,你可以重新加入。

我已经以详细的形式介绍了这个,所以可以看到这个过程。显然,您可以 assemble 必要的快捷方式。