生成 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_lowercase
、itertools.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())
好的,所以当您 运行 来自终端的 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_lowercase
、itertools.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())