生成 shell 拆分命名配置文件使用的一定数量的名称

generate set number of names used by shell split naming profile

好的,所以当您 运行 来自终端的 split 函数时,它会生成名称,它为所有部分命名,以 x 开头,后跟 2 个字母的字母增量对。 aa,ab,ac 等

我想要的是使用 python 和一个数字生成这些名称的列表。

n=3
#['xaa', 'xab', 'xac']

n = 5
#['xaa', 'xab', 'xac', 'xad', 'xae']

到目前为止,我能够从数字中生成足够的基数,但需要找到一种方法来更改我为 'z'

的每个实例附加的第二个字母
import string

n=30
myNum = round((n/26) + (0.5))
list1 = list(string.ascii_lowercase)*myNum

list1 = list1[:n]

list2sring=""
for i in list1:
 list2sring=list2sring+i+" "

newstring = "a" + list2sring.strip().replace(" "," a")
print("x" + newstring.replace(" "," x"))

#xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav xaw xax xay xaz xaa xab xac xad

期望的输出:

xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav xaw xax xay xaz xba xbb xbc xbd

您可以使用 string.ascii_lowercaseitertools.product 和字符串格式来执行您想要的操作。

from string import ascii_lowercase
from itertools import product

def make_patterns(n):
    letters_iter = product(ascii_lowercase, ascii_lowercase)
    return [
        f'x{a}{b}'
        for _, (a, b) in zip(range(n), letters_iter)
    ]

make_patterns(5)
# returns:
['xaa', 'xab', 'xac', 'xad', 'xae']

如果你想把它作为一个字符串打印:

print(' '.join(make_patterns(5)))
# prints:
xaa xab xac xad xae

您可以将 list2sring 拆分为字符列表并在 for 循环中手动将其附加到字符串

import string

n=30
myNum = round((n/26) + (0.5))
list1 = list(string.ascii_lowercase)*myNum
print(string.ascii_lowercase)

list1 = list1[:n]

list2sring=""
for i in list1:
 list2sring=list2sring+i+" "

chars = list2sring.strip().split(" ")
newstring = ""
i = 0
for c in chars:
    newstring += " x" + string.ascii_lowercase[i] + c
    if c == "z":
        i = (i + 1) % 26

print(newstring.strip())