有没有办法用Python原生解决方案替换Django的smart_str?



我正在使用使用django的smart_str方法的代码库:

 for p in pro:
        print smart_str(p["title"])

我想用本机python解决方案替换它而不涉及内部django,但我不确定smart_str确切地做什么:

smart_str(s, encoding='utf-8', strings_only=False, errors='strict')

python 2和smart_text()在python上的smart_bytes()的别名。 功能返回str或懒惰的字符串。

smart_bytes(s, encoding='utf-8', strings_only=False,errors='strict')

返回s的bytestring版本,编码 如编码中指定的。

如果strings_one是正确的,请不要转换(某些)非弦乐的对象。

我们可以简单地用print unicode(u'xa1').encode("utf-8")替换它吗?

我用这个虚拟函数替换了它,该虚拟函数如果字符串是unicode,则应用unicode(x).encode("utf-8"),如果是一个数字,则将其转换为str

def smart_str(x):
    if isinstance(x, unicode):
        return unicode(x).encode("utf-8")
    elif isinstance(x, int) or isinstance(x, float):
        return str(x)
    return x

最新更新