导航:首页 > 编程语言 > pythonu

pythonu

发布时间:2022-01-14 09:18:18

python中u'string'和unicode('string')有什么区别

首先要弄清楚的是,在python里,string object和unicode object是两种不同的类型。

string object是由characters组成的sequence,而unicode object是Unicode code units组成的sequence。

string里的character是有多种编码方式的,比如单字节的ASCII,双字节的GB2312等等,再比如UTF-8。很明显要想解读string,必需知道string里的character是用哪种编码方式,然后才能进行。

Unicode code unit又是什么东西呢?一个Unicode code unit是一个16-bit或者32-bit的数值,每个数值代表一个unicode符号。在python里,16-bit的unicode,对应的是ucs2编码。32-bit对应的是ucs4编码。是不是感觉string里character的编码没什么区别?反正我现在脑子里就是这样一个印象:在Python里,ucs2或者ucs4编码的,我们叫做unicode object,其他编码的我们就叫做string。

至于python里的unicode到底是ucs2还是ucs4的,可以在编译时指定。例如Linux下,要用ucs2做unicode的编码,可以这样
# ./configure --enable-unicode=ucs2
# make
# make install
下载的Windows预编译版本,一般都是ucs2的。要想知道某个python运行环境是ucs2还是ucs4,可以查看sys.maxunicde,65535就是ucs2的,另一个很大的数值就是ucs4。

下面我们看看string和unicode在python里的不同
我们先看看在简体中文Windows 2003系统下,系统编码是GBK
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
4
>>> len(b)
2

在一个系统编码为UTF-8的Linux环境下
>>> a = '你好'
>>> a
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> b = u'你好'
>>> b
u'/u4f60/u597d'
>>> print a
你好
>>> print b
你好
>>> a.__class__

>>> b.__class__

>>> len(a)
6
>>> len(b)
2

如何?简单总结一下:
1、string直接用引号来表示,unicode在引号前加一个u
2、直接输入的string常量会用系统缺省编码方式来编码,例如在GBK环境下,'你好'会编码成'/xc4/xe3/xba/xc3',而在UTF-8环境下就成了'/xe4/xbd/xa0/xe5/xa5/xbd'。
3、len(string)返回string的字节数,len(unicode)返回的是字符数
4、很重要的一点,print unicode不会乱码。现在我们常用的Linux、Windows系统,都是支持unicode的,版本太老的不算。比如Windows 2003支持ucs2,所以在中文Windows2003下,除了可以正常显示缺省的GBK编码外,还可以正常显示ucs2编码。举个例子,还是在中文Windows 2003的GBK环境下:
>>>a = '/xe4/xbd/xa0/xe5/xa5/xbd' # UTF-8的'你好'
>>> print a
浣犲ソ
>>> b = unicode(a, "UTF-8")
>>> b
u'/u4f60/u597d'
>>> print b
你好

应该明白了吧?

下面再说说string和unicode的相互转换,什么unicode()、decode()、encode()、codecs之类的。

❷ python 中文字符串前为什么加u

u不是针对中文, 可以针对任何的字符串
它代表是对字符串进行unicode编码.
一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般也就不带u了
但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码.

建议所有编码方式采用utf8

❸ python里tuple类型中u是什么东西

Python的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号(),列表使用方括号[];元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可,例如:

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

创建空元组,例如:tup = ();

元组中只有一个元素时,需要在元素后面添加逗号,例如:tup1 = (50,);

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

❹ python字符串前缀 u和r的区别

以r或R开头的python中的字符串表示(非转义的)原始字符串

python里面的字符,如果开头处有个r,比如:

(r’^time/plus/d{1,2}/$’, hours_ahead)

说明字符串r"XXX"中的XXX是普通字符。有普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的” "表示换行," "表示Tab等。

而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“ ”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。以r开头的字符,常用于正则表达式,对应着re模块。

以u或U开头的字符串表示unicode字符串

Unicode是书写国际文本的标准方法。如果你想要用非英语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。

❺ python中的u和unicode编码问题!!!!

#-*-coding:gbk-*-
importsys
reload(sys)
printsys.getdefaultencoding()

printu'中文'
printunicode('中文','gbk')

你运行下这个程序,就能看出来,python2默认是ascii,虽然你文件使用的gbk,但是不会影响默认编码。


print u'中文',这个是直接定义一个unicode字符串。

unicode('中文')这个是生成unicode对象,解释器会对内容使用默认编码进行解码,转换成unicode,默认的是ascii,所以报错,你指定gbk就可以了。


如果解决了您的问题请采纳!
如果未解决请继续追问

❻ python 转义符号\u

\u才是转义符,而你例中的\\u本身已经取消了转义。"\\u1234"代表“\、u、1、2、3、4”共6个字符。

❼ python u""是什么意思'

unicode码

❽ python中文字符串前为什么加u

python中文字符串前为什么加u?因为u可以针对任何字符串。u不只连接汉语, 可以连接所有的字符串。它表示可以对字符串进行unicode编码.常理来说英文字符在使用各种编码下, 一般都可以正常解析, 所以一般也就不带u了。

❾ python这段代码中u什么意思

以u或U开头的字符串表示unicode字符串,
print时,就相当于print "游戏结果\n成绩列表",字符串中,转义字符会进行转义。
输出结果就是:
游戏结果
成绩列表

别外一种用法,如果想直接输出"游戏结果\n成绩列表",就写成:
aa=(r"游戏结果\n成绩列表")
print(aa)

这样,\n就不会进行转义,方便输出处理反斜杠,
这样输出结果就是:
游戏结果\n成绩列表

阅读全文

与pythonu相关的资料

热点内容
hexophp 浏览:271
用什么app买东西半价 浏览:62
苹果下载的pdf文件怎么打开 浏览:211
如何在服务器上隐藏源站地址 浏览:645
单片机进制字母对应表 浏览:528
向某人下命令 浏览:627
编程中删除数组中的数 浏览:86
aes对称加密反编译 浏览:550
java编译成exe 浏览:190
gps处理算法 浏览:596
什么app可以和对象存钱 浏览:146
java字符串表达式计算 浏览:330
javacmd环境变量 浏览:51
电视上面找不到全民歌app怎么办 浏览:156
单片机中psw0 浏览:994
优酷视频加密么 浏览:763
本地连接dos命令 浏览:206
云服务器怎么上传金币房卡游戏 浏览:71
Python快递管理可视化 浏览:419
java正则验证数字 浏览:830