我正在使用使用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