更改给定字符串中的大写字母 - Python
Changing letters for uppercased in a given string - Python
我正在尝试编写一个函数,该函数将根据相同的单词创建一个字符串列表,但不同的字母大写。目前我有这样的东西:
word = 'passwordPASSWORD'
def generator():
list_ = []
result = itertools.permutations(word, (len(word)//2)))
for el in result:
x = ''.join(list(map(lambda x: x.lower(), el)))
if x == 'password':
list_.append(''.join(el))
return list_
generator()
因此我需要(作为例子会很短)list_ = [password, pAssword, PaSSwORd ,passWORD, ......etc.]
我试过 itertools.permutation 但对于更长的单词(如密码),脚本无法完成迭代。
在此先感谢您对此问题的支持。
此处使用 itertools
中的 product
:
from itertools import product
word = 'password'
[''.join(x) for x in product(
*[[l.upper(), l.lower()] for l in word])]
输出:
['PASSWORD',
'PASSWORd',
'PASSWOrD',
'PASSWOrd',
'PASSWoRD',
'PASSWoRd',
'PASSWorD',
'PASSWord',
'PASSwORD',
'PASSwORd',
'PASSwOrD',
'PASSwOrd',
'PASSwoRD',
'PASSwoRd',
'PASSworD',
...
尝试使用这个函数:
def all_casings(input_string):
if not input_string:
yield ""
else:
first = input_string[:1]
if first.lower() == first.upper():
for sub_casing in all_casings(input_string[1:]):
yield first + sub_casing
else:
for sub_casing in all_casings(input_string[1:]):
yield first.lower() + sub_casing
yield first.upper() + sub_casing
并这样称呼它:
[x for x in all_casings("foo")]
我正在尝试编写一个函数,该函数将根据相同的单词创建一个字符串列表,但不同的字母大写。目前我有这样的东西:
word = 'passwordPASSWORD'
def generator():
list_ = []
result = itertools.permutations(word, (len(word)//2)))
for el in result:
x = ''.join(list(map(lambda x: x.lower(), el)))
if x == 'password':
list_.append(''.join(el))
return list_
generator()
因此我需要(作为例子会很短)list_ = [password, pAssword, PaSSwORd ,passWORD, ......etc.] 我试过 itertools.permutation 但对于更长的单词(如密码),脚本无法完成迭代。
在此先感谢您对此问题的支持。
此处使用 itertools
中的 product
:
from itertools import product
word = 'password'
[''.join(x) for x in product(
*[[l.upper(), l.lower()] for l in word])]
输出:
['PASSWORD',
'PASSWORd',
'PASSWOrD',
'PASSWOrd',
'PASSWoRD',
'PASSWoRd',
'PASSWorD',
'PASSWord',
'PASSwORD',
'PASSwORd',
'PASSwOrD',
'PASSwOrd',
'PASSwoRD',
'PASSwoRd',
'PASSworD',
...
尝试使用这个函数:
def all_casings(input_string):
if not input_string:
yield ""
else:
first = input_string[:1]
if first.lower() == first.upper():
for sub_casing in all_casings(input_string[1:]):
yield first + sub_casing
else:
for sub_casing in all_casings(input_string[1:]):
yield first.lower() + sub_casing
yield first.upper() + sub_casing
并这样称呼它:
[x for x in all_casings("foo")]