常見字符串常量和表達式
操作符 | 描述 |
s1 = ' ' | 空字符串 |
s2 = "spam's" | 雙引號 |
block = """...""" | 三重引號塊 |
s3 = r'\temp\spam' | Raw字符串 |
s4 = u'spam' | Unicode字符串 |
s1 + s2,s2 * 3 | 合併,重複 |
s2[i],s2[i:j],len(s2) | 索引,分片,求長度 |
"a %s parrot" % type | 字符串格式化 |
s2.find('pa') | 搜索 |
s2.rstrip() | 移除空格 |
s2.replace('pa','xx') | 替換 |
s1.split(' , ') | 用佔位符分隔 |
s1.isdigit() | 測試字符串內容是否爲數字,返回bool值 |
s1.lower() | 轉換爲小寫字母 |
for x in s2 | 迭代 |
'spam' in s2 | 成員關係 |
單雙引號字符串是一樣的,"knight's"也可以表示爲'knight\'s'或者"knight\"s"
用轉義序列代表特殊字節
轉義序列:反斜槓+特殊字節編碼。例如,這裏有五個字符的字符串,其中嵌入了一個換行符'\n'和一個製表符'\t'
>>>s = 'a\nb\tc'
字符串反斜線字符
轉義 | 意義 |
\\ | 反斜線(保留\) |
\' | 單引號(保留 ' ) |
\" | 雙引號(保留 " ) |
\a | 響鈴(BEL) |
\b | 退格(BS) |
\f | 換頁(FF) |
\n | 換行(LF) |
\r | 返回(CR) |
\t | 水平製表(HT) |
\v | 垂直製表(VT) |
\uhhhh | Unicode 16位的十六進制值 |
\Uhhhh | Unicode 32位的十六進制值 |
\xhh | 十六進制值 |
\000 | 八進制值 |
\0 | 空字符(NULL) |
字符串抑制轉義
在字符串前面增加‘r’或是加入轉義字符,如下所示
myfile = open('C:\new\text.dat','w') myfile = open(r'C:\new\text.dat','w') #方法一 myfile = open('C:\\new\\text.dat','w') #方法二
索引和分片
偏移量是從0開始的,負偏移看作是從結束處反向計數
>>> S = 'spam' >>> S[0], S[-2] # 索引 ('s', 'a') >>> S[1:3], S[1:], S[:-1] # 分片 ('pa', 'pam', 'spa')
擴展分片:第三個值表示步長
>>> S = 'abcdefghijklmnop' >>> S[1:10:2] 'bdfhj' >>> S[::2] 'acegikmo' >>> S = 'hello' >>> S[::-1] 'olleh' >>> S = 'abcedfg' >>> S[5:1:-1] 'fdec'
字符串的修改
在第4章我們提到過,字符串本身是不支持修改的,我們用如下的方法來進行修改:
>>> S = 'spam' >>> S[0] = "x" Raises an error! >>> S = S + 'SPAM!' >>> S 'spamSPAM!' >>> S = S[:4] + 'Burger' + S[-1] >>> S 'spamBurger!' >>> S = 'splot' >>> S = S.replace('pl', 'pamal') >>> S 'spamalot'
字符串轉列表,列表轉字符串
>>> S = 'spammy' >>> L = list(S) >>> L ['s', 'p', 'a', 'm', 'm', 'y'] >>> L[3] = 'x' # Works for lists, not strings >>> L[4] = 'x' >>> L ['s', 'p', 'a', 'x', 'x', 'y'] >>> S = ''.join(L) >>> S 'spaxxy'
字符串方法實例:文本解析
>>> line = 'aaa bbb ccc' >>> col1 = line[0:3] >>> col3 = line[8:] >>> col1 'aaa' >>> col3 'ccc' >>> line = 'aaa bbb ccc' >>> cols = line.split() >>> cols ['aaa', 'bbb', 'ccc'] >>> line = 'bob,hacker,40' >>> line.split(',') ['bob', 'hacker', '40'] >>> line = "i'mSPAMaSPAMlumberjack" >>> line.split("SPAM") ["i'm", 'a', 'lumberjack']