第6章 序列:字符串、列表和元组(3)

6.6 字符串内建函数

>>> quest = 'what is your favorite color?'
>>> quest.capitalize()
'What is your favorite color?'
>>> quest.center(40)
' what is your favorite color? '
>>> quest.count('or')
2
>>> quest.endswith('blue')
False
>>> quest.find('or', 30)
-1
>>> quest.find('or', 10)
16
>>> quest.index('or', 10)
16
>>> ':'.join(quest.split())
'what:is:your:favorite:color?'
>>> quest.replace(' ', ':')
'what:is:your:favorite:color?'
>>> quest.upper()
'WHAT IS YOUR FAVORITE COLOR?'
>>>

6.7 字符串的独特特性

6.7.1 特殊字符串和控制字符

Python区别于C语言,并不是以NUL(\000)作为结束符的。

6.7.2 三引号

Python的三引号允许一个字符串跨多行,字符串可以包含换行符、制表符以及其他特殊字符。

>>> strPython = """<xml>
... 111</xml>
... <item>
... 222
... </item>
... """
>>> strPython
'<xml>\n111</xml>\n<item>\n222\n</item>\n'
>>>

6.7.3 字符串不变性

字符串是一种不可变数据类型。

6.8 Unicode

6.8.2 什么是Unicode

Unicode是计算机可以支持这个星球上多种语言的秘密武器。Unicode通过使用一个或多个字节来表示一个字符的方法突破了ASCII的限制。在这样的机制下,Unicode可以表示超过90000个字符。

6.8.3 怎样使用Unicode

新的内建函数unicode()和unichar()可以看成Unicode版本的str()和chr()。

Codec是什么

Unicode用的是多字节。codec支持的4种耳熟能详的编码方式:ASCII,ISO 8859-1/Latin-1,UTF-8和UTF-16。

UTF-8编码,用一个字节来编码ASCII字符,ASCII字符的UTF-8编码跟ASCII编码完全相同。

UTF-16容易读写,因为它把所有的字符都是用单独的一个16位字,两个字节来存储的。实际上实现它的程序很少,因为大家需要对ASCII进行支持。

6.8.5 编码解码

Python通过Unicode字符串的encode转换编码格式。

>>> unicode1 = u"范旭阳"
>>> print unicode1
范旭阳
>>> utf8_unicode1 = unicode1.encode('utf-8')
>>> print utf8_unicode1
范旭阳
>>> utf16_unicode1 = unicode1.encode('utf-16')
>>> print utf16_unicode1
��������֊>>> print utf8_unicode1.decode('utf-8')Firing event 'ProcessEnter' failed.
>>> print utf8_unicode1.decode('utf-8')
范旭阳
>>> print utf16_unicode1.decode('utf-16')
范旭阳
>>>

6.8.6 把Unicode应用到实际应用中

程序中出现字符串时一定要加个前缀u。

不要用str()函数,用unicode()代替。

不要用过时的string模块——如果传给它的是非ASCII字符,它就会把一切搞砸

不到必须时不要在你的程序中编解码Unicode字符。只在你要写入文件或者数据库或者网络时,才调用encode()函数;相应的,只要你需要把数据读回来的时候才调用decode()函数。

Python标准库里面的绝大部分模块都是兼容Unicode的,除了pickle模块!pickle模块只支持ASCII字符串。

你可能感兴趣的:(字符串)