Python å—符串
å—符串是 Python 䏿œ€å¸¸ç”¨çš„æ•°æ�®ç±»åž‹ã€‚我们å�¯ä»¥ä½¿ç”¨å¼•å�· ( ' 或 " ) æ�¥åˆ›å»ºå—符串。
创建å—符串很简å�•,å�ªè¦�为å�˜é‡�分é…�一个值å�³å�¯ã€‚例如:
var1 = 'Hello World!' var2 = "Python Runoob"
Python 访问å—符串ä¸çš„值
Python ä¸�支æŒ�å�•å—符类型,å�•å—符在 Python ä¸ä¹Ÿæ˜¯ä½œä¸ºä¸€ä¸ªå—符串使用。
Python 访问å�å—符串,å�¯ä»¥ä½¿ç”¨æ–¹æ‹¬å�·æ�¥æˆªå�–å—符串,如下实例:
实例(Python 2.0+)
以上实例执行结果:
var1[0]: H var2[1:5]: ytho
Python å—符串连接
我们å�¯ä»¥å¯¹å—符串进行截å�–并与其他å—符串进行连接,如下实例:
实例(Python 2.0+)
以上实例执行结果
输出 :- Hello Runoob!
Python 转义å—符
在需è¦�在å—符ä¸ä½¿ç”¨ç‰¹æ®Šå—符时,python 用å��æ–œæ� \ 转义å—符。如下表:
| 转义å—符 | æ��è¿° |
|---|---|
| \(在行尾时) | ç»è¡Œç¬¦ |
| \\ | å��æ–œæ� 符å�· |
| \' | �引� |
| \" | �引� |
| \a | �铃 |
| \b | é€€æ ¼(Backspace) |
| \e | 转义 |
| \000 | 空 |
| \n | �行 |
| \v | 纵�制表符 |
| \t | 横�制表符 |
| \r | 回车 |
| \f | �页 |
| \oyy | 八进制数,y 代表 0~7 çš„å—符,例如:\012 代表æ�¢è¡Œã€‚ |
| \xyy | å��å…进制数,以 \x 开头,yy代表的å—符,例如:\x0a代表æ�¢è¡Œ |
| \other | 其它的å—ç¬¦ä»¥æ™®é€šæ ¼å¼�输出 |
Pythonå—符串è¿�算符
下表实例å�˜é‡� a 值为å—符串 "Hello",b å�˜é‡�值为 "Python":
| �作符 | �述 | 实例 |
|---|---|---|
| + | å—符串连接 |
>>>a + b
'HelloPython'
|
| * | é‡�å¤�输出å—符串 |
>>>a * 2
'HelloHello'
|
| [] | 通过索引获å�–å—符串ä¸å—符 |
>>>a[1]
'e'
|
| [ : ] | 截å�–å—符串ä¸çš„一部分 |
>>>a[1:4]
'ell'
|
| in | æˆ�员è¿�算符 - 如果å—符串ä¸åŒ…å�«ç»™å®šçš„å—符返回 True |
>>>"H" in a
True
|
| not in | æˆ�员è¿�算符 - 如果å—符串ä¸ä¸�包å�«ç»™å®šçš„å—符返回 True |
>>>"M" not in a
True
|
| r/R | 原始å—符串 - 原始å—符串:所有的å—符串都是直接按照å—é�¢çš„æ„�æ€�æ�¥ä½¿ç”¨ï¼Œæ²¡æœ‰è½¬ä¹‰ç‰¹æ®Šæˆ–ä¸�能打å�°çš„å—符。 原始å—符串除在å—符串的第一个引å�·å‰�åŠ ä¸Šå—æ¯�"r"(å�¯ä»¥å¤§å°�写)以外,与普通å—符串有ç�€å‡ 乎完全相å�Œçš„è¯æ³•。 | >>>print r'\n'
\n
>>> print R'\n'
\n |
| % | æ ¼å¼�å—符串 | è¯·çœ‹ä¸‹ä¸€ç« èŠ‚ |
实例(Python 2.0+)
以上程�执行结果为:
a + b 输出结果: HelloPython a * 2 输出结果: HelloHello a[1] 输出结果: e a[1:4] 输出结果: ell H 在å�˜é‡� a ä¸ M ä¸�在å�˜é‡� a ä¸ \n \n
Python å—ç¬¦ä¸²æ ¼å¼�化
Python 支æŒ�æ ¼å¼�化å—符串的输出 ã€‚å°½ç®¡è¿™æ ·å�¯èƒ½ä¼šç”¨åˆ°é�žå¸¸å¤�æ�‚的表达å¼�,但最基本的用法是将一个值æ�’入到一个有å—ç¬¦ä¸²æ ¼å¼�符 %s çš„å—符串ä¸ã€‚
在 Python ä¸ï¼Œå—ç¬¦ä¸²æ ¼å¼�化使用与 C ä¸ sprintf å‡½æ•°ä¸€æ ·çš„è¯æ³•。
如下实例:
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
以上实例输出结果:
My name is Zara and weight is 21 kg!
python å—ç¬¦ä¸²æ ¼å¼�化符å�·:
| 符 � | �述 |
|---|---|
| %c | æ ¼å¼�化å—符å�Šå…¶ASCIIç � |
| %s | æ ¼å¼�化å—符串 |
| %d | æ ¼å¼�化整数 |
| %u | æ ¼å¼�åŒ–æ— ç¬¦å�·æ•´åž‹ |
| %o | æ ¼å¼�åŒ–æ— ç¬¦å�·å…«è¿›åˆ¶æ•° |
| %x | æ ¼å¼�åŒ–æ— ç¬¦å�·å��å…进制数 |
| %X | æ ¼å¼�åŒ–æ— ç¬¦å�·å��å…进制数(大写) |
| %f | æ ¼å¼�化浮点数å—,å�¯æŒ‡å®šå°�数点å�Žçš„精度 |
| %e | 用科å¦è®¡æ•°æ³•æ ¼å¼�化浮点数 |
| %E | 作用å�Œ%e,用科å¦è®¡æ•°æ³•æ ¼å¼�化浮点数 |
| %g | %f和%e的简写 |
| %G | %F 和 %E 的简写 |
| %p | 用å��å…è¿›åˆ¶æ•°æ ¼å¼�化å�˜é‡�的地å�€ |
æ ¼å¼�化æ“�作符辅助指令:
| 符� | 功能 |
|---|---|
| * | 定义宽度或者�数点精度 |
| - | 用�左对� |
| + | åœ¨æ£æ•°å‰�é�¢æ˜¾ç¤ºåŠ å�·( + ) |
| <sp> | åœ¨æ£æ•°å‰�é�¢æ˜¾ç¤ºç©ºæ ¼ |
| # | 在八进制数å‰�é�¢æ˜¾ç¤ºé›¶('0'),在å��å…进制å‰�é�¢æ˜¾ç¤º'0x'或者'0X'(å�–决于用的是'x'还是'X') |
| 0 | 显示的数å—å‰�é�¢å¡«å……'0'而ä¸�æ˜¯é»˜è®¤çš„ç©ºæ ¼ |
| % | '%%'输出一个�一的'%' |
| (var) | æ˜ å°„å�˜é‡�(å—å…¸å�‚æ•°) |
| m.n. | m 是显示的最�总宽度,n 是�数点�的�数(如果�用的�) |
Python2.6 开始,新增了一ç§�æ ¼å¼�化å—符串的函数 str.format(),它增强了å—ç¬¦ä¸²æ ¼å¼�化的功能。
Python 三引�
Python ä¸ä¸‰å¼•å�·å�¯ä»¥å°†å¤�æ�‚çš„å—符串进行赋值。
Python 三引å�·å…�许一个å—符串跨多行,å—符串ä¸å�¯ä»¥åŒ…å�«æ�¢è¡Œç¬¦ã€�制表符以å�Šå…¶ä»–特殊å—符。
三引å�·çš„è¯æ³•是一对连ç»çš„å�•引å�·æˆ–者å�Œå¼•å�·ï¼ˆé€šå¸¸éƒ½æ˜¯æˆ�对的用)。
>>> hi = '''hi there''' >>> hi # repr() 'hi\nthere' >>> print hi # str() hi there
三引å�·è®©ç¨‹åº�员从引å�·å’Œç‰¹æ®Šå—符串的泥æ½é‡Œé�¢è§£è„±å‡ºæ�¥ï¼Œè‡ªå§‹è‡³ç»ˆä¿�æŒ�一å°�å�—å—ç¬¦ä¸²çš„æ ¼å¼�是所谓的WYSIWYG(所è§�å�³æ‰€å¾—ï¼‰æ ¼å¼�的。
ä¸€ä¸ªå…¸åž‹çš„ç”¨ä¾‹æ˜¯ï¼Œå½“ä½ éœ€è¦�一å�—HTML或者SQL时,这时当用三引å�·æ ‡è®°ï¼Œä½¿ç”¨ä¼ 统的转义å—符体系将å��分费神。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
Unicode å—符串
Python ä¸å®šä¹‰ä¸€ä¸ª Unicode å—符串和定义一个普通å—ç¬¦ä¸²ä¸€æ ·ç®€å�•:
>>> u'Hello World !' u'Hello World !'
引å�·å‰�å°�写的"u"表示这里创建的是一个 Unicode å—ç¬¦ä¸²ã€‚å¦‚æžœä½ æƒ³åŠ å…¥ä¸€ä¸ªç‰¹æ®Šå—符,å�¯ä»¥ä½¿ç”¨ Python çš„ Unicode-Escape ç¼–ç �。如下例所示:
>>> u'Hello\u0020World !' u'Hello World !'
被替æ�¢çš„ \u0020 æ ‡è¯†è¡¨ç¤ºåœ¨ç»™å®šä½�ç½®æ�’入编ç �值为 0x0020 çš„ Unicode å—ç¬¦ï¼ˆç©ºæ ¼ç¬¦ï¼‰ã€‚
Python çš„å—符串内建函数
å—符串方法是从 Python1.6 到 2.0 æ…¢æ…¢åŠ è¿›æ�¥çš„ —— å®ƒä»¬ä¹Ÿè¢«åŠ åˆ°äº†Jython ä¸ã€‚
这些方法实现了 string 模å�—的大部分方法,如下表所示列出了目å‰�å—符串内建支æŒ�的方法,所有的方法都包å�«äº†å¯¹ Unicode 的支æŒ�,有一些甚至是专门用于 Unicode 的。
| 方法 | �述 |
|---|---|
|
把å—符串的第一个å—符大写 |
|
|
返回一个原å—符串居ä¸,å¹¶ä½¿ç”¨ç©ºæ ¼å¡«å……è‡³é•¿åº¦ width 的新å—符串 |
|
|
返回 str 在 string 里�出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
|
|
以 encoding 指定的编ç �æ ¼å¼�è§£ç � string,如果出错默认报一个 ValueError çš„ 异 常 , 除é�ž errors 指 定 çš„ 是 'ignore' 或 者'replace' |
|
|
以 encoding 指定的编ç �æ ¼å¼�ç¼–ç � string,如果出错默认报一个ValueError 的异常,除é�ž errors 指定的是'ignore'或者'replace' |
|
|
检查å—符串是å�¦ä»¥ obj 结æ�Ÿï¼Œå¦‚æžœbeg 或者 end 指定则检查指定的范围内是å�¦ä»¥ obj 结æ�Ÿï¼Œå¦‚果是,返回 True,å�¦åˆ™è¿”回 False. |
|
|
把å—符串 string ä¸çš„ tab 符å�·è½¬ä¸ºç©ºæ ¼ï¼Œtab 符å�·é»˜è®¤çš„ç©ºæ ¼æ•°æ˜¯ 8。 |
|
|
检测 str 是å�¦åŒ…å�«åœ¨ string ä¸ï¼Œå¦‚æžœ beg å’Œ end 指定范围,则检查是å�¦åŒ…å�«åœ¨æŒ‡å®šèŒƒå›´å†…,如果是返回开始的索引值,å�¦åˆ™è¿”回-1 |
|
|
æ ¼å¼�化å—符串 |
|
|
è·Ÿfind()æ–¹æ³•ä¸€æ ·ï¼Œå�ªä¸�过如果strä¸�在 stringä¸ä¼šæŠ¥ä¸€ä¸ªå¼‚常. |
|
|
如果 string 至少有一个å—符并且所有å—ç¬¦éƒ½æ˜¯å—æ¯�或数å—则返 回 True,å�¦åˆ™è¿”回 False |
|
|
如果 string 至少有一个å—符并且所有å—ç¬¦éƒ½æ˜¯å—æ¯�则返回 True, å�¦åˆ™è¿”回 False |
|
|
如果 string å�ªåŒ…å�«å��进制数å—则返回 True å�¦åˆ™è¿”回 False. |
|
|
如果 string å�ªåŒ…å�«æ•°å—则返回 True å�¦åˆ™è¿”回 False. |
|
|
如果 string ä¸åŒ…å�«è‡³å°‘一个区分大å°�写的å—符,并且所有这些(区分大å°�写的)å—符都是å°�写,则返回 True,å�¦åˆ™è¿”回 False |
|
|
如果 string ä¸å�ªåŒ…å�«æ•°å—å—符,则返回 True,å�¦åˆ™è¿”回 False |
|
|
如果 string ä¸å�ªåŒ…å�«ç©ºæ ¼ï¼Œåˆ™è¿”回 True,å�¦åˆ™è¿”回 False. |
|
|
如果 string æ˜¯æ ‡é¢˜åŒ–çš„(è§� title())则返回 True,å�¦åˆ™è¿”回 False |
|
|
如果 string ä¸åŒ…å�«è‡³å°‘一个区分大å°�写的å—符,并且所有这些(区分大å°�写的)å—符都是大写,则返回 True,å�¦åˆ™è¿”回 False |
|
|
以 string 作为分隔符,将 seq 䏿‰€æœ‰çš„å…ƒç´ (çš„å—符串表示)å�ˆå¹¶ä¸ºä¸€ä¸ªæ–°çš„å—符串 |
|
|
返回一个原å—符串左对é½�,å¹¶ä½¿ç”¨ç©ºæ ¼å¡«å……è‡³é•¿åº¦ width 的新å—符串 |
|
|
转æ�¢ string 䏿‰€æœ‰å¤§å†™å—符为å°�写. |
|
|
截掉 string å·¦è¾¹çš„ç©ºæ ¼ |
|
|
maketrans() 方法用于创建å—ç¬¦æ˜ å°„çš„è½¬æ�¢è¡¨ï¼Œå¯¹äºŽæŽ¥å�—两个å�‚数的最简å�•的调用方å¼�,第一个å�‚数是å—符串,表示需è¦�转æ�¢çš„å—符,第二个å�‚数也是å—符串表示转æ�¢çš„ç›®æ ‡ã€‚ |
|
|
返回å—符串 str 䏿œ€å¤§çš„å—æ¯�。 |
|
|
返回å—符串 str 䏿œ€å°�çš„å—æ¯�。 |
|
|
有点åƒ� find()å’Œ split()的结å�ˆä½“,从 str 出现的第一个ä½�置起,把 å— ç¬¦ 串 string 分 æˆ� 一 个 3 å…ƒ ç´ çš„ å…ƒ 组 (string_pre_str,str,string_post_str),如果 string ä¸ä¸�包å�«str 则 string_pre_str == string. |
|
|
把 string ä¸çš„ str1 替æ�¢æˆ� str2,如果 num 指定,则替æ�¢ä¸�超过 num 次. |
|
|
类似于 find() 函数,返回å—符串最å�Žä¸€æ¬¡å‡ºçŽ°çš„ä½�置,如果没有匹é…�项则返回 -1。 |
|
|
类似于 index(),ä¸�过是返回最å�Žä¸€ä¸ªåŒ¹é…�到的å�å—符串的索引å�·ã€‚ |
|
|
返回一个原å—符串å�³å¯¹é½�,å¹¶ä½¿ç”¨ç©ºæ ¼å¡«å……è‡³é•¿åº¦ width 的新å—符串 |
|
|
类似于 partition()函数,�过是从�边开始查找 |
|
|
åˆ é™¤ string å—ç¬¦ä¸²æœ«å°¾çš„ç©ºæ ¼. |
|
|
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个å�å—符串 |
|
|
按照行('\r', '\r\n', '\n')分隔,返回一个包å�«å�„è¡Œä½œä¸ºå…ƒç´ çš„åˆ—è¡¨ï¼Œå¦‚æžœå�‚æ•° keepends 为 False,ä¸�包å�«æ�¢è¡Œç¬¦ï¼Œå¦‚果为 True,则ä¿�ç•™æ�¢è¡Œç¬¦ã€‚ |
|
|
检查å—符串是å�¦æ˜¯ä»¥ obj 开头,是则返回 True,å�¦åˆ™è¿”回 False。如果beg å’Œ end 指定值,则在指定范围内检查. |
|
|
在 string 上执行 lstrip()和 rstrip() |
|
|
翻转 string ä¸çš„大å°�写 |
|
|
返回"æ ‡é¢˜åŒ–"çš„ string,就是说所有å�•è¯�éƒ½æ˜¯ä»¥å¤§å†™å¼€å§‹ï¼Œå…¶ä½™å—æ¯�å�‡ä¸ºå°�写(è§� istitle()) |
|
|
æ ¹æ�® str 给出的表(包å�« 256 个å—符)转æ�¢ string çš„å—符, è¦�过滤掉的å—符放到 del å�‚æ•°ä¸ |
|
|
转æ�¢ string ä¸çš„å°�写嗿¯�为大写 |
|
|
返回长度为 width çš„å—符串,原å—符串 string å�³å¯¹é½�,å‰�é�¢å¡«å……0 |
qing
282***728@qq.com
�考地�
计算机å�ªèƒ½å¤„ç�†æ•°å—,如果è¦�处ç�†æ–‡æœ¬ï¼Œå°±å¿…须先把文本转æ�¢ä¸ºæ•°å—æ‰�能处ç�†ã€‚Unicode把所有è¯è¨€éƒ½ç»Ÿä¸€åˆ°ä¸€å¥—ç¼–ç �é‡Œï¼Œè¿™æ ·å°±ä¸�会å†�有乱ç �问题了。Unicodeæ ‡å‡†ä¹Ÿåœ¨ä¸�æ–å�‘展,但最常用的是用两个å—节表示一个å—符(如果è¦�用到é�žå¸¸å��僻的å—符,就需è¦�4个å—节)。现代æ“�作系统和大多数编程è¯è¨€éƒ½ç›´æŽ¥æ”¯æŒ�Unicode。
ASCIIç¼–ç �å’ŒUnicodeç¼–ç �的区别:
ASCIIç¼–ç �是1个å—节,而Unicodeç¼–ç �通常是2个å—节,举例如下。
ã€€ã€€å—æ¯� A 用ASCIIç¼–ç �是å��进制的65,二进制的01000001ï¼›
  å—符 0 用ASCIIç¼–ç �是å��进制的48,二进制的00110000,注æ„�å—符 '0' 和整数
0 是��的;
ã€€ã€€æ±‰å— ä¸ å·²ç»�超出了ASCIIç¼–ç �的范围,用Unicodeç¼–ç �是å��进制的20013,二进制的01001110 00101101。
  如果把ASCIIç¼–ç �çš„ A 用Unicodeç¼–ç �,å�ªéœ€è¦�在å‰�é�¢è¡¥0å°±å�¯ä»¥ï¼Œå› æ¤ï¼Œ A çš„Unicodeç¼–ç �是00000000 01000001。
qing
282***728@qq.com
�考地�
niubaty
niu***y@163.com
对 decode / encode的补充说明
windows python2.7 çš„çŽ¯å¢ƒï¼Œä¸æ–‡ç¼–ç �默认使用 gbk:
许多模å�—返回的ã€�或使用的å—符串是 unicode,故而需è¦�转ç �。
例如,xxx 模å�— tmp_fun() 返回的å—符串是 unicode å—符,而å�¦ä¸€ä¸ªæ¨¡å�— yyy 模å�— fun_tmp() 返回的å—符串是 gbk å—符,我们现在需è¦�判æ–两个返回值是å�¦ç›¸ç‰ã€‚å�¯ä»¥ä½¿ç”¨å¦‚下两ç§�æ–¹å¼�进行判æ–。
import xxx import yyy if tmp_fun()==fun_tmp().decode("gbk"): print "eq" ''' decode("gbk")作用为将gbkç¼–ç �转为unicodeç¼–ç � '''或者
import xxx import yyy if tmp_fun().encode("gbk")==fun_tmp() print "eq" ''' encode("gbk")作用为将unicodeç¼–ç �转为gbkç¼–ç � '''niubaty
niu***y@163.com
嘻嘻嘻
269***5696@qq.com
å¦‚æžœä½ ä¸�ç�†è§£ s[1:] s[0:-1] 的请看这里:
嘻嘻嘻
269***5696@qq.com