字符串是一個很長的話題,縱然現在開始第三部分,但是也不能完全說盡。因為字符串是自然語言中最復雜的東西,也是承載功能最多的,計算機高級語言編程,要解決自然語言中的問題,讓自然語言中完成的事情在計算機上完成,所以,也不得不有更多的話題。
字符串就是一個話題中心。
## 給字符串編號
在很多很多情況下,我們都要對字符串中的每個字符進行操作(具體看后面的內容),要準確進行操作,必須做的一個工作就是把字符進行編號。比如一個班里面有50名學生,如果這些學生都有學號,老師操作他們將簡化很多。比如不用專門找每個人名字,直接通過學號知道誰有沒有交作業。
在python中按照這樣的順序對字符串進行編號:從左邊第一個開始是0號,向下依次按照整數增加,為1、2...,直到最后一個,在這個過程中,所有字符,包括空格,都進行變好。例如:
Hello,wor ld
對于這個字符串,從左向右的變好依次是:
|0|1|2|3|4|5|6|7|8|9|10|11|
|H|e|l|l|o|,|w|o|r| |l |d |
在班級了,老師只要喊出學生的學號,自動有對應的學生站起來。在python里面如何把某個編號所對應的字符調出來呢?看代碼:
~~~
>>> a = "Hello,wor ld"
>>> len(a) #字符串的長度是12,說明公有12個字符,最后一個字符編號是11
12
>>> a[0]
'H'
>>> a[3]
'l'
>>> a[9]
' '
>>> a[11]
'd'
>>> a[5]
','
~~~
特別說明,編號是從左邊開始,第一個是0。
能不能從右邊開始編號呢?可以。這么人見人愛的python難道這點小要求都不滿足嗎?
~~~
>>> a[-1]
'd'
>>> a[11]
'd'
>>> a[-12]
'H'
>>> a[-3]
' '
~~~
看到了嗎?如果從右邊開始,第一個編號是-1,這樣就跟從左邊區分開了。也就是a[-1]和a[11]是指向同一個字符。
不管從左邊開始還是從右邊開始,都能準確找到某個字符。看官喜歡從哪邊開始就從哪邊開始,或者根據實際使用情況,需要從哪邊開始就從哪邊開始。
## 字符串截取
有了編號,不僅僅能夠找出某個字符,還能在字符串中取出一部分來。比如,從“hello,wor ld”里面取出“llo”。可以這樣操作
~~~
>>> a[2:5]
'llo'
~~~
這就是截取字符串的一部分,**注意:**所截取部分的第一個字符(l)對應的編號是(2),從這里開始;結束的字符是(o),對應編號是(4),但是結束的編號要增加1,不能是4,而是5.這樣截取到的就是上面所要求的了。
試一試,怎么截取到",wor"
也就是說,截取a[n,m],其中n<m,得到的字符是從a[n]開始到a[m-1]
有幾個比較特殊的
~~~
>>> a[:] #表示截取全部
'Hello,wor ld'
>>> a[3:] #表示從a[3]開始,一直到字符串的最后
'lo,wor ld'
>>> a[:4] #表示從字符串開頭一直到a[4]前結束
'Hell'
~~~
## 去掉字符串兩頭的空格
這個功能,在讓用戶輸入一些信息的時候非常有用。有的朋友喜歡輸入結束的時候敲擊空格,比如讓他輸入自己的名字,輸完了,他來個空格。有的則喜歡先加一個空格,總做的輸入的第一個字前面應該空兩個格。
好吧,這些空格是沒用的。python考慮到有不少人可能有這個習慣,因此就幫助程序員把這些空格去掉。
方法是:
- S.strip() 去掉字符串的左右空格
- S.lstrip() 去掉字符串的左邊空格
- S.rstrip() 去掉字符串的右邊空格
看官在看下面示例之前,請先自己用上面的內置函數,是否可以?
~~~
>>> b=" hello "
>>> b
' hello '
>>> b.strip()
'hello'
>>> b
' hello '
>>> b.lstrip()
'hello '
>>> b.rstrip()
' hello'
~~~
## 練習
學編程,必須做練習,通過練習熟悉各種情況下的使用。
下面共同做一個練習:輸入用戶名,計算機自動向這個用戶打招呼。代碼如下:
~~~
#coding:utf-8
print "please write your name:"
name=raw_input()
print "Hello,%s"%name
~~~
這段代碼中的raw_input()的含義,就是要用戶輸入內容,所輸入的內容是一個字符串。
其實,上面這段代碼存在這改進的地方,比如,如果用戶輸入的是小寫,是不是要將名字的首字母變成大寫呢?如果有空格,是不是要去掉呢?等等。或許還有別的,看看能不能在這個練習中,將以前學習過的東西綜合應用一下?
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于Python的事情
- 為什么要開設本欄目
- 第一部分 積小流,至江海
- Python環境安裝
- 集成開發環境(IDE)
- 數的類型和四則運算
- 啰嗦的除法
- 開始真正編程
- 初識永遠強大的函數
- 玩轉字符串(1):基本概念、字符轉義、字符串連接、變量與字符串關系
- 玩轉字符串(2)
- 玩轉字符串(3)
- 眼花繚亂的運算符
- 從if開始語句的征程
- 一個免費的實驗室
- 有容乃大的list(1)
- 有容乃大的list(2)
- 有容乃大的list(3)
- 有容乃大的list(4)
- list和str比較
- 畫圈還不簡單嗎
- 再深點,更懂list
- 字典,你還記得嗎?
- 字典的操作方法
- 有點簡約的元組
- 一二三,集合了
- 集合的關系
- Python數據類型總結
- 深入變量和引用對象
- 賦值,簡單也不簡單
- 坑爹的字符編碼
- 做一個小游戲
- 不要紅頭文件(1): open, write, close
- 不要紅頭文件(2): os.stat, closed, mode, read, readlines, readline
- 第二部分 窮千里目,上一層樓
- 正規地說一句話
- print能干的事情
- 從格式化表達式到方法
- 復習if語句
- 用while來循環
- 難以想象的for
- 關于循環的小伎倆
- 讓人歡喜讓人憂的迭代
- 大話題小函數(1)
- 大話題小函數(2)
- python文檔
- 重回函數
- 變量和參數
- 總結參數的傳遞
- 傳說中的函數條規
- 關于類的基本認識
- 編寫類之一創建實例
- 編寫類之二方法
- 編寫類之三子類
- 編寫類之四再論繼承
- 命名空間
- 類的細節
- Import 模塊
- 模塊的加載
- 私有和專有
- 折騰一下目錄: os.path.<attribute>
- 第三部分 昨夜西風,亭臺誰登
- 網站的結構:網站組成、MySQL數據庫的安裝和配置、MySQL的運行
- 通過Python連接數據庫:安裝python-MySQLdb,連接MySQL
- 用Pyton操作數據庫(1):建立連接和游標,并insert and commit
- 用Python操作數據庫(2)
- 用Python操作數據庫(3)
- python開發框架:框架介紹、Tornado安裝
- Hello,第一個網頁分析:tornado網站的基本結構剖析:improt模塊、RequestHandler, HTTPServer, Application, IOLoop
- 實例分析get和post:get()通過URL得到數據和post()通過get_argument()獲取數據
- 問候世界:利用GAE建立tornado框架網站
- 使用表單和模板:tornado模板self.render和模板變量傳遞
- 模板中的語法:tornado模板中的for,if,set等語法
- 靜態文件以及一個項目框架
- 模板轉義
- 第四部分 暮然回首,燈火闌珊處
- requests庫
- 比較json/dictionary的庫
- defaultdict 模塊和 namedtuple 模塊
- 第五部分 Python備忘錄
- 基本的(字面量)值
- 運算符
- 常用的內建函數
- 擴展閱讀(來自網絡文章)
- 人生苦短,我用Python