如何使用python/Django从字符串中删除非ASCII字符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (327)

我在数据库中存储了一串HTML。不幸的是,它包含了一些字符,例如®,我想用替换这些字符,无论是在DB中还是在Python/Django代码中使用find替换。

提问于
用户回答回答于

试试这个代码

def unicode_escape(unistr):
    """
    Tidys up unicode entities into HTML friendly entities

    Takes a unicode string as an argument

    Returns a unicode string
    """
    import htmlentitydefs
    escaped = ""

    for char in unistr:
        if ord(char) in htmlentitydefs.codepoint2name:
            name = htmlentitydefs.codepoint2name.get(ord(char))
            entity = htmlentitydefs.name2codepoint.get(name)
            escaped +="&#" + str(entity)

        else:
            escaped += char

    return escaped

这样用它

>>> from zack.utilities import unicode_escape
>>> unicode_escape(u'such as ® I want')
u'such as &#174 I want'
用户回答回答于

可以使用ASCII字符

# -*- coding: utf-8 -*-

def strip_non_ascii(string):
    ''' Returns the string without non ASCII characters'''
    stripped = (c for c in string if 0 < ord(c) < 127)
    return ''.join(stripped)


test = u'éáé123456tgreáé@€'
print test
print strip_non_ascii(test)

结果

éáé123456tgreáé@€
123456tgre@

请注意@是因为,嗯,毕竟这是一个ASCII字符。如果想要去掉特定的子集(例如,只有数字、大写字母和小写字母),则可以限制查看ASCII表

扫码关注云+社区

领取腾讯云代金券