我有一组具有任意名称的文件夹和文件。我的最终目标是解析文件夹和文件,并创建一组排序良好且命名良好的文件夹。这些标题有时带有空格作为定界符,有时带有句点(除了那些作为定界符的示例,我没有找到其他示例)。我想显示这些文件名,不带分隔符,仅显示实词(如果日期相关,则指定文件名和日期)。我现在不担心日期,我有一个查询表,可以根据正确拼写的标题找出日期。
标题示例:a.bad.title.asdf.1975
(其中asdf是从中抓取文件的作者或网站)。
标题应显示为:A Bad Title (1975)
another bad title asdf.com 1975
应显示为:Another Bad Title (1975)
a really.bad title[1975]
应显示为:A Really Bad Title (1975)
我尝试过的
可能的解决方案:使用定界符解析单词以提取每个单独的单词,并使用大型词典进行单词搜索,我必须弄清楚数组的给定元素是否为单词。
问题1:A.bad.title.1975
变为('a', 'bad', 'title', '1975')
,我可以毫无问题地使用它。但是,真正错误的标题[1975]变为('a', 'really', 'bad', 'title[1975]')
,无法处理。
问题2:有些标题是数字或数字的一部分,例如'71
或2012
或2001: A Space Odyssey
,所以我不能仅仅解析真正的单词是什么。
编辑(问题2的示例):
文件名1:'72.2014.asdf.txt
文件名2:2012 [2009].txt
文件名3:2001: a.space.odyssey[1968].txt
编辑结束
换句话说,我的问题是我希望能够删除给定的日期或随机数,但是如果它与标题相关(因为某些标题是日期或年份)以及其中的某些单词,我想保留该日期标题会附加到标题中的年份(无空格),并且无法解析。
我的最后一个想法可能是根据它们可能有的共同词为每个可能的标题打分,但这仍然没有解决“标题年”的问题。
如果有人有任何建议可以帮助我考虑这个问题,请告诉我!
最佳答案
快速肮脏:
import re
for title in [
"a.bad.title.asdf.1975",
"another bad title asdf.com 1975",
"a really.bad title[1975]"]:
print(" ".join(map(str.title, re.findall(r"\w+", title))))
输出量
A Bad Title Asdf 1975
Another Bad Title Asdf Com 1975
A Really Bad Title 1975
通过这种形式,应该易于与已知标题进行比较。