如何在python中将文件路径和文件名拆分为组件



我想拆分"C:My WorkTester RelatedA_B_C.txt"into [C:, My Work, Tester Related, A, B, C, txt]

我刚开始学习Python。我导入了os。路径模块,和玩有些功能在交互提示下却无法得到预期的结果。谢谢你的帮助。我能够使用os.path.basename来获取文件,但是无法根据给定的分隔符"_"将文件分割成组件。

s = "C:\My Work\Tester Related\A_B_C.txt"
import re
print (re.split(r"\|.|_",s))
['C:', 'My Work', 'Tester Related', 'A', 'B', 'C', 'txt']
original_path = "C:My WorkTester RelatedA_B_C.txt"
# Must quote the backslash in this case.
split_path = original_path.split("\")
# At this point, split_path looks like:
# ['C:', 'My Work', 'Tester Related', 'A_B_C.txt']
split_filename = split_path[-1].split("_")
# split_filename is ['A', 'B', 'C.txt']
split_ext = split_filename[:-1].split(".")
# split_ext is ['C', 'txt']
split_filename = split_filename[:-1] + split_ext
# split_filename is ['A', 'B', 'C', 'txt']
split_path = split_path[:-1] + split_filename
# ['C:', 'My Work', 'Tester Related', 'A', 'B', 'C', 'txt']

难看的两行!

import itertools
txt = r"C:\My Work\Tester Related\A_B_C.txt"
result = list(itertools.chain(*map(lambda x: x.split('_'), txt.split(os.path.sep))))
result = result[:-1] + list(os.path.splitext(result[-1]))

更好的方法是使用re,就像@PaedricCunningham在他的回答中所做的那样。

re.split(r"\|.|_", txt)

最新更新