Skip to main content
 首页 » 编程设计

python之通过\t 拆分字符串的棘手方法

2025年05月04日34sky-heaven

这样的字符串:

x = dir\tsubdir1\t\tfile1.ext\t\tsubsubdir1\tsubdir2\t\tsubsubdir2\t\t\tfile2.ext 

如何'pythonish/tricky'将上面的字符串拆分成列表?

dir 
\tsubdir1 
\t\tfile1.ext 
\t\tsubsubdir1 
\tsubdir2 
\t\tsubsubdir2 
\t\t\tfile2.ext 
 
['dir', '\tsubdir1', '\t\tfile1.ext', '\t\tsubsubdir1', '\tsubdir2', '\t\tsubsubdir2', '\t\t\tfile2.ext'] 

概念验证:

x = r'dir\tsubdir1\t\tfile1.ext\t\tsubsubdir1\tsubdir2\t\tsubsubdir2\t\t\tfile2.ext' 
y = x.split(r'\t') 
print(y) 

请您参考如下方法:

也许使用正则表达式?

>>> import regex 
>>> L = regex.split(r"(?<!\t)\t", "dir\tsubdir1\t\tfile1.ext\t\tsubsubdir1\tsubdir2\t\tsubsubdir2\t\t\tfile2.ext") 
>>> L 
['dir', 'subdir1', '\tfile1.ext', '\tsubsubdir1', 'subdir2', '\tsubsubdir2', '\t\tfile2.ext'] 
>>> L[:1] + ['\t' + i for i in L[1:]] 
['dir', '\tsubdir1', '\t\tfile1.ext', '\t\tsubsubdir1', '\tsubdir2', '\t\tsubsubdir2', '\t\t\tfile2.ext'] 

它是如何工作的?

正则表达式是

(?<!\t)\t 

意思是“一个标签之前没有另一个标签”,因此标签序列中的每个第一个标签都与正则表达式匹配。然后将其用作拆分标记。

拆分后,每个后续项目都会剥离一个制表符,因此最后一行 L[:1] + ['\t' + i for i in L[1:]] 将背面缺少标签。