拆分字符串并加入多个组合python

时间:2021-05-19 04:32:51

标签: python string join split

我的文件夹名称为 = "2545 S3C 5005 P1 5007 P2 5009 P3"

模式是此文件夹中将有 3 个文件,命名为:

  1. “2545 S3C 5005 P1”
  2. “2545 S3C 5007 P2”
  3. “2545 S3C 5009 P3”

我想从文件夹名称创建文件的名称,因此我想拆分文件夹的名称和组合以形成文件名。

到目前为止我尝试过的代码是:


folder = "2545 S3C 5005 P1 5007 P2 5009 P3"

i=iter(Folder.split(' '))
File1 = map("-".join,zip(*[i]*4))

这加入了拆分列表中的前 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)

实际上,对于您的用例,一个简单的 splitjoin 就足够了:

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']