0

REGEXPython中有没有办法通过使用andgroup()或来提取每个文件目录和Windows文件路径中的文件os.path

我正在处理具有不同数量目录的文件路径,因此一行可能是D:\dir1\file.txt,而下一行可能是我正在搜索的文本中的数量。Z:\dir1\dir2\dir3\dir4\dir5\file.txtREGEX\

任何见解都会有所帮助,即使这只是无法做到的痛苦事实。

编辑后:

我正在尝试提取介于\和最终之间的目录名称,file.txt并将每个dir或写入file输出文本文件中它自己的列。

以上两行我想要的输出是:

 col1|col2|col3|col4|col5|col6
 dir1|dir2|dir3|dir4|dir5|file.txt
 dir1|    |    |    |    |file.txt

我知道os.path有很多好的内置函数,但是在阅读了这个网站之后:https ://docs.python.org/2/library/os.path.html ,我不认为他们中的任何一个都在做我做的事情我试图做。

4

1 回答 1

2

您可以使用以下方法分隔文件名和目录:

splitFilePath = filePath.rsplit (']\', 1)
directory = splitFilePath [0]
fileName = splitFilePath [1]

您可以使用以下方法获取由“\”分隔的所有块:

chunks = filePath.split (r'\')

然后,您可以使用切片来取出特定的块,并使用连接将它们的子集粘合在一起。

使用您在已编辑问题中添加的列假定您知道确定列数的最长路径:

  • 如上所述使用 split 函数进行拆分
  • 查找最长列表的长度
  • 在所有列表中插入空字符串,但在最后一个元素之前插入最长的字符串以使列表长度相等
  • 使用“|”加入他们 使用连接功能

回应您的评论:

运行以下程序

filePath = r'E:\dir1\Logs\dir2\1998-12-23\message.txt'
splitFilePath = filePath.rsplit ('\\', 1)
directory = splitFilePath [0]
fileName = splitFilePath [1]
print directory
print fileName

给出作为输出

E:\dir1\Logs\dir2\1998-12-23
message.txt

所以'\\'而不是rsplit中的'\'。

于 2015-07-15T20:23:00.773 回答