【问题标题】:Parsing directories and detecting unexpected blanks解析目录并检测意外空白
【发布时间】:2015-02-17 21:43:59
【问题描述】:

我正在尝试解析一些目录并识别没有特定正确模式的文件夹。举个例子吧:

Correct: Level1\\Level2\\Level3\\Level4_ID\\Date\\Hour\\file.txt
Incorrect: Level1\\Level2\\Level3\\Level4\\Date\\Hour\\file.txt

请注意,不正确的没有_ID。我最终想要的目标是解析数据,替换“\”作为分隔符,以便为 MS excel 导入:

Level1;Level2;Level3;Level4;ID;Date;Hour;file.txt
Level1;Level2;Level3;Level4; ;Date;Hour;file.txt

我已经成功解析了所有正确的数据,执行以下步骤: 让 files 成为我所有目录的列表

for i in arange(len(files)):
    processed_str = files[i].replace(" ", "").replace("_", "\\")
    processed_str = processed_str.split("\\")

我的问题是使用相同的脚本检测 Level4 文件夹是否在下划线后有一个 ID,因为“文件”包含正确和不正确的目录。 问题是,由于不正确的没有 ID,在执行 split("\") 之后,我最终将列混合在一起,在 Level4 和 Date 之间没有空白:

 Level1;Level2;Level3;Level4;Date;Hour;file.txt

谢谢,

【问题讨论】:

    标签: python directory string-parsing


    【解决方案1】:

    在拆分目录后检查“_ID”,这样您就不会丢失信息。假设目录名称本身不包含转义的反斜杠,并且 ID 字段始终处于第 4 级(从 1 开始计数),则应该这样做:

    for i in arange(len(files)):
        parts = files[i].split("\\")
        if parts[3].endswith("_ID"):
            parts.insert(4, parts[3][:-len("_ID")])
        else:
            parts.insert(4, " ")
        final = ";".join(parts)
    

    【讨论】:

    • 谢谢,效果很好。我应该说 ID 是一个数字,所以我的代码基于您的代码并使用 isDigit() 进行了调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2011-05-28
    • 1970-01-01
    相关资源
    最近更新 更多