2014-09-22 10 views

Odpowiedz

41

Można użyć kategorię Unicode jeśli używasz regex pakiet:

>>> import regex 
>>> regex.findall(r'\p{Sc}', '$99.99/€77') # Python 3.x 
['$', '€'] 

>>> regex.findall(ur'\p{Sc}', u'$99.99/€77') # Python 2.x (NoteL unicode literal) 
[u'$', u'\xa2'] 
>>> print _[1] 
¢ 

UPDATE

Alterantive sposób używając unicodedata.category:

>>> import unicodedata 
>>> [ch for ch in '$99.99/€77' if unicodedata.category(ch) == 'Sc'] 
['$', '€'] 
+4

Dzięki! Nie wiedziałem, że pakiet "regex" różni się od pakietu "re". – Lanc

+2

'regex' jest * niesamowite *. [To tylko wierzchołek góry lodowej.] (Https://pypi.python.org/pypi/regex) – Veedrac

+0

@Lanc, Są ludzie, którzy próbowali odpowiedzieć na twoje pytanie. Jeśli to ci pomogło, możesz powiedzieć tej społeczności, używając najbardziej odpowiedniej dla ciebie [accepting answer] (http://meta.stackoverflow.com/a/5235). – falsetru

26

Jeśli chcesz trzymać re jest dostarczyć characters from Sc manually:

u"[$¢£¤¥֏؋৲৳৻૱௹฿៛\u20a0-\u20bd\ua838\ufdfc\ufe69\uff04\uffe0\uffe1\uffe5\uffe6]" 

zrobi.

+0

Który z nich jest symbolem Euro? – Nzall

+3

Jest to zawarte w '\ u20a0- \ u20bd': € to' \ u20ac'. – Phillip

+6

Możesz zautomatyzować generowanie zestawu znaków waluty: 'currency_symbols = u ''. Join (unichr (i) dla i w zakresie (0xffff) jeśli unicodedata.category (unichr (i)) == 'Sc')' –

Powiązane problemy