[Python-es] Convertir utf8 a html entities

Raúl Cumplido raulcumplido en gmail.com
Mar Jun 5 14:26:56 CEST 2012


Realmente lo que viene siendo es un diccionario con todas las entities a
substituir:

htmlentitydefs.codepoint2name
{8704: 'forall', 8194: 'ensp', 8195: 'emsp', 8709: 'empty', 8711: 'nabla',
8712: 'isin', 8201: 'thinsp', 8715: 'ni', 8204: 'zwnj', 8205: 'zwj', 8206:
'lrm', 8719: 'prod', 8721: 'sum', 8722: 'minus', 8211: 'ndash', 8212:
'mdash', 8727: 'lowast', 8216: 'lsquo', 8217: 'rsquo', 8730: 'radic', 175:
'macr', 8220: 'ldquo', 8221: 'rdquo', 8222: 'bdquo', 8224: 'dagger', 8225:
'Dagger', 8226: 'bull', 8230: 'hellip', 8743: 'and', 8744: 'or', 8745:
'cap', 8746: 'cup', 8747: 'int', 8240: 'permil', 8242: 'prime', 8243:
'Prime', 8756: 'there4', 8713: 'notin', 8249: 'lsaquo', 8250: 'rsaquo',
8764: 'sim', 62: 'gt', 8629: 'crarr', 9824: 'spades', 8260: 'frasl', 8773:
'cong', 8776: 'asymp', 8207: 'rlm', 9829: 'hearts', 8800: 'ne', 8801:
'equiv', 9827: 'clubs', 8804: 'le', 8805: 'ge', 9830: 'diams', 38: 'amp',
8834: 'sub', 8835: 'sup', 8836: 'nsub', 8838: 'sube', 8839: 'supe', 8853:
'oplus', 8855: 'otimes', 8734: 'infin', 8218: 'sbquo', 8901: 'sdot', 160:
'nbsp', 161: 'iexcl', 162: 'cent', 163: 'pound', 164: 'curren', 8869:
'perp', 166: 'brvbar', 167: 'sect', 168: 'uml', 169: 'copy', 170: 'ordf',
171: 'laquo', 8364: 'euro', 173: 'shy', 174: 'reg', 8733: 'prop', 176:
'deg', 177: 'plusmn', 178: 'sup2', 179: 'sup3', 180: 'acute', 181: 'micro',
182: 'para', 183: 'middot', 184: 'cedil', 185: 'sup1', 186: 'ordm', 187:
'raquo', 188: 'frac14', 189: 'frac12', 190: 'frac34', 191: 'iquest', 192:
'Agrave', 193: 'Aacute', 194: 'Acirc', 195: 'Atilde', 196: 'Auml', 197:
'Aring', 198: 'AElig', 199: 'Ccedil', 200: 'Egrave', 201: 'Eacute', 202:
'Ecirc', 203: 'Euml', 204: 'Igrave', 34: 'quot', 206: 'Icirc', 207: 'Iuml',
208: 'ETH', 209: 'Ntilde', 210: 'Ograve', 211: 'Oacute', 212: 'Ocirc', 213:
'Otilde', 214: 'Ouml', 215: 'times', 216: 'Oslash', 217: 'Ugrave', 218:
'Uacute', 219: 'Ucirc', 220: 'Uuml', 221: 'Yacute', 222: 'THORN', 223:
'szlig', 224: 'agrave', 225: 'aacute', 226: 'acirc', 227: 'atilde', 228:
'auml', 229: 'aring', 230: 'aelig', 231: 'ccedil', 232: 'egrave', 205:
'Iacute', 234: 'ecirc', 235: 'euml', 236: 'igrave', 8658: 'rArr', 238:
'icirc', 239: 'iuml', 240: 'eth', 241: 'ntilde', 242: 'ograve', 243:
'oacute', 244: 'ocirc', 245: 'otilde', 246: 'ouml', 247: 'divide', 248:
'oslash', 249: 'ugrave', 250: 'uacute', 251: 'ucirc', 252: 'uuml', 253:
'yacute', 254: 'thorn', 255: 'yuml', 172: 'not', 8968: 'lceil', 8969:
'rceil', 8970: 'lfloor', 8971: 'rfloor', 8465: 'image', 8472: 'weierp',
8476: 'real', 8482: 'trade', 732: 'tilde', 9002: 'rang', 8736: 'ang', 402:
'fnof', 8706: 'part', 8501: 'alefsym', 710: 'circ', 338: 'OElig', 339:
'oelig', 352: 'Scaron', 353: 'scaron', 8593: 'uarr', 60: 'lt', 8594:
'rarr', 8707: 'exist', 8595: 'darr', 8254: 'oline', 233: 'eacute', 376:
'Yuml', 916: 'Delta', 237: 'iacute', 8592: 'larr', 913: 'Alpha', 914:
'Beta', 915: 'Gamma', 8596: 'harr', 917: 'Epsilon', 918: 'Zeta', 919:
'Eta', 920: 'Theta', 921: 'Iota', 922: 'Kappa', 923: 'Lambda', 924: 'Mu',
925: 'Nu', 926: 'Xi', 927: 'Omicron', 928: 'Pi', 929: 'Rho', 931: 'Sigma',
932: 'Tau', 933: 'Upsilon', 934: 'Phi', 935: 'Chi', 936: 'Psi', 937:
'Omega', 945: 'alpha', 946: 'beta', 947: 'gamma', 948: 'delta', 949:
'epsilon', 950: 'zeta', 951: 'eta', 952: 'theta', 953: 'iota', 954:
'kappa', 955: 'lambda', 956: 'mu', 957: 'nu', 958: 'xi', 959: 'omicron',
960: 'pi', 961: 'rho', 962: 'sigmaf', 963: 'sigma', 964: 'tau', 965:
'upsilon', 966: 'phi', 967: 'chi', 968: 'psi', 969: 'omega', 9674: 'loz',
8656: 'lArr', 977: 'thetasym', 978: 'upsih', 8659: 'dArr', 8660: 'hArr',
982: 'piv', 165: 'yen', 8657: 'uArr', 9001: 'lang'}

Lo que tienes que hacer es recorrer tu texto y si el ord(caracter) se
encuentra en el diccionario sustituirlo, sino dejarlo como esta. Que tienes
que recorrer todo el texto, si ... quizás tienes razón que no es muy bonito
y que probablemente con regular expressiones sería más rápido, pero vas a
tener que meter todas las posibilidades que tienes en el diccionario.

Saludos,

Raúl

2012/6/5 Raimon Esteve <raimonesteve en gmail.com>

> El día 5 de junio de 2012 14:00, Raúl Cumplido
> <raulcumplido en gmail.com> escribió:
> > Según la documentación oficial:
> >
> > http://docs.python.org/library/htmllib.html#module-htmlentitydefs
>
> correcto, pero tienes que ir carácter por carácter del string. No hay
> nada más "limpio"?
>
> --
> Si us plau, NO adjunti arxius a les seves respostes. Li preguem que
> integri el text al cos del missatge. Pot respondre usant NetEtiquete
> que li ajudarà a seguir la conversa.
> http://es.wikipedia.org/wiki/Netiquette
>
> Por favor, NO adjunte archivos a sus respuestas. Le rogamos que
> integre el texto en el cuerpo del mensaje. Puede responder usando
> NetEtiquete que le ayudará a seguir la
> conversación.http://es.wikipedia.org/wiki/Netiquette
>
> Please, DO NOT send attachment files with your answers, just copy and
> paste only the text you need to send into the body of your mails.
> Repply using NetEtiquete. http://en.wikipedia.org/wiki/Netiquette
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Raúl Cumplido
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120605/05876f22/attachment.html>


Más información sobre la lista de distribución Python-es