python字符串系列之二:
1. 字符串切片:
在上邊講到了字符串的索引,有了索引還能幹什麼,就有一個比較厲害的操作,那就是切片: 切片其實就是從字符串里根據索引取出部分字符或者說一個子串。
切片格式: str1[m:n:k] m和n是索引,支持反向索引;m會包括在內,n不包括(有頭無尾);k是步長,即間隔幾個字符取一個
實例如下:
str1 = "asdfgh"
print str1[0] # a
print str1[0:3] # asd 不包括3 有頭無尾,下方一樣
print str1[0:] # asdfgh
print str1[-3:-1] # fg 這裏就不包括-1
print str1[:-1] # asdfg 不包括-1
print str1[0:4:2] # ad 有頭無尾,步長爲2。第一個a,間隔2再取一個d
print str1[-6:-1:3] # af 有頭無尾,步長爲3
2. 轉義
字符串轉義。轉義符在很多語言中都有,基本上也都是通用的。下面列舉一部分
轉義字符 | 描述 |
---|---|
\ (在行尾時) | 表示本行未結束。下一行內容也屬於本行 |
\’ | 單引號 |
\” | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\n | 換行 |
\r | 回車 |
\f | 換頁 |
\000 | 空 |
實例
# \ 轉換成其本來的含義 這裏單引號本來的含義就是一個字符,只是python裏有特殊含義
print 'what's your name?' # 會報錯
print 'what\'s your name?' # 輸出 what's your name 這裏\'轉義
3. 字符串操作符
-
+:連接符。str1 + str2 。將字符串str1和str2連接起來。強連接,注意要手動類型轉換,int + str會報錯
-
*:複製。 str1 * n。將字符串str1複製n次
-
in:判斷是否爲子串。 str1 in str2 。判斷str1是否爲str2的子串,即str1是否存在於str2中。
str1 = "asd" str2 = "qwe" num1 = 12 print str1 + str2 # 輸出asdqwe # print str1 + num1 # 報錯。一個字符串、一個數值。強行連接會報錯 print str1 * 2 # 輸出asdasd 將字符串str1複製兩次 print 'as' in str1 # 輸出True。字符串'as'是字符串str1即'asd'的子串
4. 常用處理函數
-
len(str1):返回字符串str1的長度
-
str(x):返回任意類型x對應的字符串。
-
repr(x):將傳入參數x變成字符串。就是在x兩側加上雙引號。和eval相反
-
eval(x):將x兩側的雙引號去除。和repr相反
-
chr(x):將ASCII碼轉換成字符串返回。 傳入參數爲ASCII碼
-
ord(x):將字符串轉換成ASCII碼返回。僅接收長度爲1的字符串參數
# coding=utf-8 str1 = "asdfgh" num = 121 print len(str1) # 輸出str1的長度 num = str(num) print num, type(num) # 輸出 121 <type 'str'> 此時121是一個字符串,實際是"121" num1 = repr(122) print num1, type(num1) # 輸出 122 <type 'str'> 加上了引號,變成字符串 print 'asd' # 輸出 asd print repr('asd') # 輸出 'asd' 注意和上邊的區別 print num1, type(num1) # 輸出 122 <type 'str'> 加上了引號,變成字符串 num1 = eval(num1) print num1, type(num1) # 輸出 122 <type 'int'> eval去除了引號 print ord('A') # 輸出 65 。即大寫字母A對應的ASCII碼值 print chr(65) # 輸出A。即ASCII碼65對應的值