有没有办法在python中获得所有大小写字母以及数字的列表?

有没有办法在python中获得所有大小写字母以及数字的列表?,python,Python,我知道有一种方法可以通过使用“string.printable”获得所有ascii字符的列表,但我想知道是否可以只获得所有字母(大写和小写)和所有数字的列表。换句话说,如何将“string.ascii_小写”、“string.ascii_大写”和“string.digits”合并到一个列表中 如何将“string.ascii_小写”、“string.ascii_大写”和“string.digits”合并到一个列表中 看看其他一些答案,请记住Python语言本身的智慧: import this w

我知道有一种方法可以通过使用“string.printable”获得所有ascii字符的列表,但我想知道是否可以只获得所有字母(大写和小写)和所有数字的列表。换句话说,如何将“string.ascii_小写”、“string.ascii_大写”和“string.digits”合并到一个列表中

如何将“string.ascii_小写”、“string.ascii_大写”和“string.digits”合并到一个列表中

看看其他一些答案,请记住Python语言本身的智慧:

import this
wisdom = [s for s in this.s.split('\n') 
         if 'cersrenoyl' in s][0].decode('rot13')
print(wisdom)
使用以下命令:

string.printable[:62]
  • 数字[0:9]
  • 小写[10:36]
  • 大写[36:62]

由于
string.ascii\u小写、string.ascii\u大写、string.digits
都是字符串,因此您可以将
+
与字符串连接,形成所需的字符串。或者您可以过滤较长的
字符串。可打印的
就是您想要的

串联:

>>> string.ascii_lowercase+string.ascii_uppercase+string.digits
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
如果集合a字符比简单的串联更复杂,或者长字符串的顺序在结果中很重要,则还可以将长字符串过滤到所需的字符串中

要在Python中进行筛选,可以使用列表:

>>> group=set(string.ascii_lowercase+string.ascii_uppercase+string.digits)
>>> [e for e in string.printable if e in group]
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
然后使用
.join
将列表合并为一个字符串:

>>> ''.join([e for e in string.printable if e in group])
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> filter(lambda c: c in group, string.printable)
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
或者,如果给定字符串,则使用生成字符串的:

>>> ''.join([e for e in string.printable if e in group])
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> filter(lambda c: c in group, string.printable)
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
或者,作为正则表达式:

>>> import re
>>> ''.join(re.findall(r'[a-zA-Z0-9]', string.printable))
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

谢谢我刚想出来!