0

编辑2:

已解决,请参阅下面的答案 waaaaaaaay。

编辑:

敲了几下头后,我几乎做到了。这是我的(没有清理,你可以说我正在排除一堆东西)代码:

http://pastebin.com/ve4Qkj2K

这就是问题所在:它有时会起作用,而其他时候则不是那么好。例如,它可以完美地处理某些文件,然后留下最长的代码而不是最短的代码,而对于其他文件,它可能会删除 5 个重复项中的 2 个,留下 3 个。如果它只是可靠地执行,我也许可以修复它,但我不理解看似随机的行为。有任何想法吗?

原帖:

只是让你知道,我刚开始使用 python,我使用的是 python 3.3

所以这是我的问题:

假设我有一个包含大约 5,000 个文件的文件夹。其中一些文件的名称非常相似,但内容不同,扩展名可能不同。在一个可读的名称之后,有一个代码,它前面总是有一个“(”或一个“[”(不带引号)。名称和代码用空格分隔。例如:

    something (TZA).blah
    something [TZZ].another
    hello (YTYRRFEW).extension
    something (YJTR).another_ext

我试图只获取其中一个东西的东西,并删除其他东西。另一个可能很重要的事实是,通常有多个代码,例如“something (THTG) (FTGRR) [GTGEES!#!].yet_another_random_extension”,全部由空格分隔。尽管 100% 没关系,但最好保存代码最少的那个。

我制作了一些(非常非常短的)代码来获取所有文件的列表:

    import glob
    files=[]
    files=glob.glob("*")

但在此之后我几乎迷路了。任何帮助将不胜感激,即使它只是为我指明了正确的方向!

4

2 回答 2

0

我建议创建单独的裸文件名数组,并检查条件是否有任何元素存在于任何其他位置,方法是获取包含所有索引的数组,不包括当前签入的循环迭代。这

    if str_fragment in name

条件只是在任何字符串类型名称中查找任何字符串片段。它也很有用。

于 2013-07-28T22:03:23.517 回答
0

我知道了!我最终得到的版本(99%)完美无缺。虽然它需要多次通过,但在我那可怜的慢笔记本上阅读、分析和删除 2000 多个文件大约需要 2 秒。我的最终版本在这里:

http://pastebin.com/i7SE1mh6

唯一的小错误是,如果列表中的最后一项有重复项,它将保留在那里(并且不超过 2 个)。手动更正非常简单,所以我没有费心去修复它(不是没有人有时间解决这个问题)。

希望在未来的某个时候,这实际上可以帮助我以外的人。

我在这里没有得到太多答案,但这是一个非常不寻常的问题,所以无论如何谢谢。再见。

于 2013-07-31T18:32:33.327 回答