【发布时间】:2018-07-12 09:54:41
【问题描述】:
对于一个项目,我想从指向文件的文档路径中取出单词并将它们返回到一个列表中。我可以通过使用列表推导、正则表达式和 for 循环来完成此操作:
for path, subdir, files in os.walk(directory):
for file in files:
themen = [x for x in re.findall(r'[^\W\d_]+',path)]
themen_final = []
for i in range(4,len(themen)):
themen_final.append(themen[i])
print(themen_final)
这很好用,但我敢肯定,可以将 for 循环 for i in range... 也放在上面的列表理解中。我该怎么做?
【问题讨论】:
-
试试
print([re.findall(r'[^\W\d_]+',path)[4:] for path, subdir, files in os.walk(directory)]) -
或者,
print([item for sublist in [re.findall(r'[^\W\d_]+',path)[4:] for path, subdir, files in os.walk(directory)] for item in sublist]) -
我会选择最具可读性和易读性的版本。不管你走多少线:)
-
@belthazorNv 我完全同意你的看法。我只是对在列表理解中放置两个 for 循环的可能性感到好奇。
标签: regex python-3.x list-comprehension