Je passe avec une base de code qui utilise la méthode smart_str
de Django:Existe-t-il un moyen de remplacer smart_str de Django par une solution native Python?
for p in pro:
print smart_str(p["title"])
Je veux le remplacer par une solution de python natif sans impliquer django à l'intérieur mais je ne suis pas sûr de ce que smart_str
faire exactement:
smart_str(s, encoding='utf-8', strings_only=False, errors='strict')
Alias de smart_bytes() sur Python 2 et smart_text() sur python 3. Cette fonction retourne un str ou une chaîne paresseux.
et
smart_bytes(s, encoding='utf-8', strings_only=False,errors='strict')
Retourne la version de bytestring s, codé tel que spécifié dans l'encodage.
Si strings_only a pour valeur True, ne convertissez pas (certains) des objets qui ne sont pas de type chaîne. Pourrions-nous le remplacer simplement par
print unicode(u'\xa1').encode("utf-8")
?
Il est * « Python natif » *, voir [le code source ] (https://github.com/django/django/blob/92053acbb9160862c3e743a99ed8ccff8d4f8fd6/django/utils/encoding.py). Il gère beaucoup plus de cas que votre alternative suggérée. – jonrsharpe
Je vois, donc je viens de copier le code des fonctions 'smart_byte' et' force_byte' pour être indépendant de django –
Aussi vous aurez besoin de mettre en œuvre (ou au moins fournir un mannequin pour) 'django.utils.functional.Promise' pour les utiliser tels quels. – jonrsharpe