2010-06-27 20 views

Répondre

4

Python ne supporte pas les propriétés Unicode, donc vous ne pouvez pas utiliser les propriétés Pi et Pf, donc je suppose que votre solution est aussi bon qu'il obtient.

Vous pouvez également prendre en considération les "guillemets faux" qui sont utilisés malheureusement -. L'accent aigu et grave (´ et `` ): \ u0060 and \ u00B4`

Ensuite, il y a guillemets (« » ‹ ›

De plus, votre commande a un petit bug: vous ajoutez la barre oblique inversée à la chaîne quotes (parce que vous utilisez une chaîne brute). Chaîne de guillemets simples à la place

>>> quotes = ur"[\"'\u2018\u2019\u201c\u201d\u0060\u00b4]" 
>>> "\\" in quotes 
True 
>>> quotes 
u'[\\"\'\u2018\u2019\u201c\u201d`\xb4]' 
>>> quotes = ur"""["'\u2018\u2019\u201c\u201d\u0060\u00b4]""" 
>>> "\\" in quotes 
False 
>>> quotes 
u'["\'\u2018\u2019\u201c\u201d`\xb4]' 
+0

Merci! Est-ce que Py3 supportera les propriétés Unicode? –

+1

Pas encore; il y a une réécriture du module 're' en cours, mais je n'ai aucune idée quand/si elle sera fusionnée dans la branche de développement principale. Je doute qu'il sera là avant Python 3.3. –

+1

Même s'ils ne sont pas encore disponibles dans le module 're', vous pouvez toujours importer le module' unicodedata' et faire 'quotes = '' .join (c pour c in (chr (i) pour i dans la plage (0x110000)) si unicodedata.category (c) dans ('Pf', 'Pi')) '. – dan04

5

Les guillemets auront souvent la catégorie Unicode Pi (ponctuation, guillemets) ou Pf (Ponctuation, guillemet final). Vous devrez gérer manuellement les guillemets "neutres" ' et ".

+2

+1: Homme, j'ai oublié ça. J'ai corrigé ma réponse. Malheureusement, Python ne supporte pas (encore) les propriétés Unicode. Il n'a pas spécifié Python, mais je devine ceci à partir de son exemple de code et de sa question précédente. –