有没有办法用Python本机解决方案取代Django的smart_str?

有没有办法用Python本机解决方案取代Django的smart_str?,python,django,unicode,Python,Django,Unicode,我正在传递一个使用Django的smart_str方法的代码库: for p in pro: print smart_str(p["title"]) 我想用本机python解决方案替换它,而不涉及django内部,但我不确定smart_str到底做了什么: 智能字符串,编码为utf-8,字符串仅为False,错误为strict Python 2上的smart_字节和Python 3上的smart_文本的别名。这 函数返回str或惰性字符串 及 smart_bytess,编码为

我正在传递一个使用Django的smart_str方法的代码库:

 for p in pro:
        print smart_str(p["title"])
我想用本机python解决方案替换它,而不涉及django内部,但我不确定smart_str到底做了什么:

智能字符串,编码为utf-8,字符串仅为False,错误为strict

Python 2上的smart_字节和Python 3上的smart_文本的别名。这 函数返回str或惰性字符串

smart_bytess,编码为='utf-8',字符串\u only=False,错误为='strict'

返回s的bytestring版本,已编码 按照编码中的规定

如果strings\u only为True,则不要转换某些非字符串类对象


我们可以简单地用print unicodeu'\xa1'.encodeutf-8替换它吗

我将其替换为这个伪函数,如果字符串是unicode,则该伪函数将应用unicodex.encodeutf-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

它是Python本机的,请参阅。它处理的情况比您建议的替代方案多得多。我明白了,所以我只是复制smart_byte的代码并强制_byte函数独立于django。您还需要实现或至少为django.utils.functional.Promise提供一个虚拟函数,以便按原样使用它们。它太依赖于模块django.utils.six,我想要一个独立的解决方案,我至少可以将它保存为一个模块。然后由您决定您实际需要多少功能。