2011-02-09 17 views
5

To może być głupie pytanie, ale nie rozumiem, jaka jest różnica między string.uppercase i string.ascii_uppercase w module string. Drukowanie docstringu obu funkcji drukuje to samo. Nawet dane wyjściowe z print string.uppercase i print string.ascii_uppercase są takie same.Python: string.uppercase vs. string.ascii_uppercase

Dzięki.

+0

Uczę się Python już teraz. Przechodziłem przez moduł string, czytając dokumentację. – Dharmit

Odpowiedz

16

Patrz: http://docs.python.org/library/string.html

string.ascii_uppercase:

  • wielkie litery 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. Ta wartość nie zależy od ustawień regionalnych i nie ulegnie zmianie.

string.uppercase:

  • Ciąg zawierający wszystkie znaki, które są uważane za wielkie litery. W większości systemów jest to ciąg "ABCDEFGHIJKLMNOPQRSTUVWXYZ". Określona wartość zależy od ustawień regionalnych i będzie aktualizowana po wywołaniu funkcji locale.setlocale().
8

Należy zauważyć, że w Pythonie 3.x string.uppercase, a także string.lowercase i string.letters mają vapourised. Nie uznawano dobrej praktyki za globalne "stałe", które zmieniały się po zmianie lokalizacji. (Zobacz http://docs.python.org/py3k/whatsnew/3.0.html)

Najlepszą rzeczą dla każdego nowego kodu jest prawdopodobnie udawanie, że nie istnieją one również w Pythonie 2.x. W ten sposób nie przechowywać problemy, jeśli kiedykolwiek trzeba migrować do Python 3.x

-1

Aby sprawdzić wielkimi literami, w dowolnym języku (nie własne lokum), użyj [:upper:] i regex.UNICODE z modułem regex .