Python中split('/')分割路径返回列表含空元素的原因咨询
为什么split('/')分割路径会出现空元素?
原因解析
str.split('/')的切割逻辑是保留分隔符之间的所有片段,包括空片段,你的路径里出现三种会生成空元素的情况:
- 路径以
/开头:第一个分隔符前没有任何内容,所以生成空字符串作为列表第一个元素 - 出现连续多个
/(比如b后面的///):每两个相邻/之间没有有效字符,因此每个间隔都会生成一个空字符串 - 路径中间的连续
/(比如.//f里的//):同样在两个/之间产生空字符串
解决方法
如果想得到你预期的无空元素列表,用列表推导式过滤掉空字符串即可:
path = "/a/b///c/../d/.//f" tokens = [token for token in path.split('/') if token] print(tokens) # 输出: ['a', 'b', 'c', '..', 'd', '.', 'f']
要是你实际是想处理文件路径的规范化,Python的os.path模块有更专业的工具,比如os.path.normpath(path)能直接把路径简化为a/b/c/../d/./f,再分割也能得到干净的令牌,但单纯切割过滤空元素的话,上面的方法最直接。
内容的提问来源于stack exchange,提问作者Hoang Nguyen
相关产品推荐
相关产品推荐

