如何检查一个字符串是Unicode还是ASCII?

14 浏览
0 Comments

如何检查一个字符串是Unicode还是ASCII?

在Python中,我需要做什么来确定一个字符串的编码是什么?

0
0 Comments

如何检查一个字符串是Unicode还是ASCII?

在Python 2中,我们可以使用type或isinstance来判断一个对象是Unicode字符串还是字节字符串。Unicode字符串使用type函数返回,而字节字符串使用type函数返回

在Python 2中,str类型只是一个字节序列,Python不知道它的编码方式。为了安全地存储文本,建议使用unicode类型。如果想要更深入地了解这个问题,可以参考http://farmdev.com/talks/unicode/。

在Python 3中,str类型就类似于Python 2中的unicode类型,用于存储文本。而Python 2中的str类型在Python 3中被称为bytes类型。

如果想要判断一个字节字符串是否为有效的utf-8或ascii编码,可以调用decode方法。如果出现UnicodeDecodeError异常,则表示不是有效的编码。

对于Python 3来说,需要使用str(s, "ascii")来代替str.decode()。

需要注意的是,decode方法的默认编码是utf-8。因此,如果对一个字节串调用decode方法,可以使用print("utf8 content:", html.decode())来打印出utf-8内容。

以上就是如何检查一个字符串是Unicode还是ASCII的方法。通过使用type函数或isinstance函数,我们可以轻松判断字符串的类型。同时,通过调用decode方法,我们可以判断一个字节字符串是否为有效的utf-8或ascii编码。

0
0 Comments

如何检查一个字符串是Unicode还是ASCII?

在Python 3.x中,所有的字符串都是Unicode字符的序列。使用isinstance检查str(默认为Unicode字符串)应该足够。

对于Python 2.x,大多数人似乎使用一个if语句,其中有两个检查。一个是对str的检查,一个是对unicode的检查。

如果你想要检查是否有一个“类似字符串”的对象,可以使用以下方法:

isinstance(x, basestring)

这是错误的。在Python 2.7中,isinstance(u"x", basestring)返回True。

我相信这就是问题的关键。使用isinstance(x, basestring)可以替代上述两个不同的测试。

不,但是isinstance(x, basestring)对于Unicode和普通字符串都返回True,这使得测试无用。

在许多情况下很有用,但显然不是问题提问者的意思。

这是问题的答案。其他人误解了提问者的意思,给出了关于Python类型检查的普通答案。

不能回答提问者的问题。问题的标题(仅仅)可以这样解释,这个答案是正确的。然而,提问者明确说“找出哪个”,这个答案没有解决这个问题。

通过整理以上内容,我们可以得出以下结论:在Python 3.x中,使用isinstance(x, str)来检查字符串是否为Unicode;在Python 2.x中,使用isinstance(x, basestring)来检查字符串是否为Unicode或者ASCII。

0
0 Comments

Python 3中,所有的字符串都是Unicode字符的序列。有一个bytes类型用来保存原始字节。

Python 2中,字符串可以是str类型或者unicode类型。你可以通过以下代码来判断:

def whatisthis(s):
    if isinstance(s, str):
        print "ordinary string"
    elif isinstance(s, unicode):
        print "unicode string"
    else:
        print "not a string"

这段代码不能区分"Unicode还是ASCII",它只区分Python的类型。一个Unicode字符串可能完全由ASCII范围内的字符组成,而字节字符串可以包含ASCII、编码的Unicode或者非文本数据。

:你可能在使用Python 3。

注意:首先,你需要确认你正在运行的是Python 2。如果你的代码设计可以在Python 2或Python 3下运行,你需要首先检查你的Python版本。

0