查找包含数字和特殊字符的字符串的所有大写,小写和混合大小写组合

时间:2016-07-15 23:24:45

标签: python string

我想编写一个带字符串的程序,让我们说“abc”,然后显示:

abc, Abc, ABc, ABC, AbC, aBc, aBC, AbC

经过一段时间的挖掘后,我发现this question解决了我的问题,但如果字符串包含一些特殊的字符,例如@.,它会给我一些重复的内容。输出,我怎么能这样做只有字母字符是上/下?例如,如果输入是@c,则输出应仅为:

A@c
a@C
A@C
a@c

这是我正在使用的代码:

import itertools
string = 'abc12@abc.com'
x = map(''.join, itertools.product(*((c.upper(), c.lower()) for c in string)))
print x

提前致谢!

2 个答案:

答案 0 :(得分:2)

@Caius的答案有效,但是预先删除重复的字符更有效,而不是等到你拥有所有结果然后删除那里的重复项。

我的代码差异只是set((c.upper(), c.lower())),而不仅仅是(c.upper(), c.lower())

import itertools
string = 'abc12@abc.com'
x = map(''.join, itertools.product(*(set((c.upper(), c.lower())) for c in string)))
assert len(list(x)) == 512

答案 1 :(得分:0)

尝试将数组转换为集合:

open failed: administratively prohibited: open failed