我的文件夹名称为 = "2545 S3C 5005 P1 5007 P2 5009 P3"
模式是此文件夹中将有 3 个文件,命名为:
我想从文件夹名称创建文件的名称,因此我想拆分文件夹的名称和组合以形成文件名。
到目前为止我尝试过的代码是:
folder = "2545 S3C 5005 P1 5007 P2 5009 P3"
i=iter(Folder.split(' '))
File1 = map("-".join,zip(*[i]*4))
这加入了拆分列表中的前 4 个单词,但我不确定如何进行其他组合。 请帮忙。
谢谢
答案 0 :(得分:1)
您可以尝试将拆分与 re.findall
结合使用:
folder = "2545 S3C 5005 P1 5007 P2 5009 P3"
prefix = ' '.join(folder.split()[:2])
output = [prefix + ' ' + x for x in re.findall(r'\b\d+ P\d+', folder)]
print(output) # ['2545 S3C 5005 P1', '2545 S3C 5007 P2', '2545 S3C 5009 P3']
答案 1 :(得分:1)
考虑到您提到的格式,这将使用 f 字符串来解决问题:
import re
folder = "2545 S3C 5005 P1 5007 P2 5009 P3"
folder_split = folder.split()
file_prefix = ' '.join(folder_split[:2])
output = [f"{file_prefix} {' '.join(file_name_remaining)}" for file_name_remaining in zip(folder_split[2::2], folder_split[3::2])]
print(output)
答案 2 :(得分:0)
实际上,对于您的用例,一个简单的 split
和 join
就足够了:
folder = "2545 S3C 5005 P1 5007 P2 5009 P3"
splitted = folder.split()
paths = [' '.join(splitted[:2])+ ' '.join(splitted[i:i+2]) for i in range(2, len(splitted), 2)]
输出:
paths
['2545 S3C5005 P1', '2545 S3C5007 P2', '2545 S3C5009 P3']
答案 3 :(得分:0)
一种选择是使用生成器表达式。此特定版本假定它始终是一组 3 个文件:
folder = "2545 S3C 5005 P1 5007 P2 5009 P3"
subs = iter(folder.split())
prefix = next(subs) + ' ' + next(subs) + ' '
output = [prefix + next(subs) + ' ' + next(subs) for _ in '123']
output
['2545 S3C 5005 P1', '2545 S3C 5007 P2', '2545 S3C 5009 P3']
对于条目数量可能不同的更一般情况:
folder = "2545 S3C 5005 P1 5007 P2 5009 P3 5022 P4"
words = folder.split()
subs = iter(words)
prefix = next(subs) + ' ' + next(subs) + ' '
output = [prefix + next(subs) + ' ' + next(subs) for _ in range((len(words) - 2)//2)]
output
['2545 S3C 5005 P1',
'2545 S3C 5007 P2',
'2545 S3C 5009 P3',
'2545 S3C 5022 P4']