Wiem, że istnieje sposób, aby uzyskać listę wszystkich znaków ASCII, używając "string.Printable", ale chciałbym wiedzieć, czy można uzyskać tylko listę wszystkich liter (zarówno wielkich, jak i małych liter), a wszystkie cyfry. Innymi słowy, jak mogę dołączyć do "string.ascii_lowercase", "string.ascii_uppercase" i "string.digits" na jedną listę?

2
Samvit Agarwal 24 czerwiec 2017, 07:41

3 odpowiedzi

Najlepsza odpowiedź

Ponieważ string.ascii_lowercase, string.ascii_uppercase, string.digits wszystkie} można włączyć z +, aby utworzyć ciąg chcesz. Albo możesz filtrować dłużej string.printable, aby być tym, czego chcesz.

Powiązanie:

>>> string.ascii_lowercase+string.ascii_uppercase+string.digits
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

Możesz także przefiltrować dłuższy ciąg do łańcucha, który chcesz, jeśli ustawione znaki są bardziej skomplikowane niż prosta konkurencja może osiągnąć lub kolejność dłuższego ciągu jest ważna w wyniku.

Aby filtrować w Pythonie, możesz użyć rozumienia listy:

>>> 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']

Następnie użyj .join, aby dołączyć do listy razem w ciągu:

>>> ''.join([e for e in string.printable if e in group])
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

Lub, użyj

dawg 24 czerwiec 2017, 16:55

Użyj tego:

string.printable[:62]
  • Liczby [0: 9]
  • Małe litery [10:36]
  • Wielkie litery [36:62]
0
RaminNietzsche 24 czerwiec 2017, 04:45

Jak mogę dołączyć do "string.ascii_lowercase", "string.ascii_uppercase" i "string.digits" na jedną listę?

all_ascii_digits = string.digits + string.ascii_lowercase + string.ascii_uppercase

Patrząc na niektóre z innych odpowiedzi, pamiętaj o mądrości znalezionej w samym języku Python:

import this
wisdom = [s for s in this.s.split('\n') 
         if 'cersrenoyl' in s][0].decode('rot13')
print(wisdom)
3
miraculixx 24 czerwiec 2017, 05:15