Python中的字符串

可能大多數人在學習C語言的時候,最先接觸的數據類型就是字符串,因爲大多教程都是以"Hello world"這個程序作爲入門程序,這個程序中要打印的"Hello world"就是字符串。如果你做過自然語言處理方面的研究,並且用Python去做過相關實驗,你肯定會體會到Python在字符串處理方面相對於其他語言的明顯優勢之處。今天我們來了解一下Python中的字符串,看看它的用法。

一.Python中如何聲明字符串

  在Python中聲明一個字符串通常有三種方法:在它的兩邊加上那個單引號、雙引號或者三引號。

  如:

  

  從上面可以看出三種聲明方法的效果是完全一樣的,在Python中用這三種聲明方法來聲明字符串意義完全等同的,即'hello world'和"hello world"以及'''hello world'''是沒有任何區別的。但是會有人問:既然是完全等同的,爲什麼要弄出三種聲明方式呢?下面看一下這幾個例子:

     

  在Python中提供了這幾種方法,使得使用起來更加方便靈活(當然也可以使用轉義字符去解決上面報錯的地方)。

  在這裏要注意的是,

  1)在Python中沒有類似C語言中char這種類型的字符串,也就是說即使是單個字符也是字符串。

  2)Python中的字符串一旦聲明,是不能進行更改的,即不能通過對某一位置重新賦值改變內容。

  

二.Python中的字符串類型

  Python中的字符串有兩種數據類型:str類型和unicode類型。str類型採用的ASCII編碼,也就是說它無法表示中文。unicode類型採用unicode編碼,能夠表示任意的字符,包括中文、日文、韓文等。

  在python中字符串默認採用的ASCII編碼,如果要顯示聲明爲unicode類型的話,需要在字符串前面加上'u'或者'U'。

  下面看一段代碼

print '我'print u'我'print 'python'print u'python'

  這段代碼的運行結果爲:

  

  從運行結果可以看出,如果是中文的話,不採用unicode類型,輸出的會是亂碼。

三.轉義字符和原始字符串

  同C語言中一樣,Python中也有轉義字符,用反斜槓'\'來表示對後面字符進行轉義。

  比如上面例子中的問題就可以用轉義來解決:

  

  如果你編寫過Java程序,並且使用過Java中的正則表達式,你可能會對Java正則表達式深惡痛絕(我自己就是),因爲稍不注意就會出錯,裏面有太多的轉義,而且看起來也很繁瑣雜亂。在Python中,你不必再爲這個問題煩惱了,因爲Python提供了原始字符串,顧名思義,就是保留原始字符的意思,不對反斜槓及反斜槓後面的字符進行轉義,聲明原始字符串的方法是在字符串前面加上'r'或者'R'。

  

  在這裏要注意:在Python中行尾結束符始終爲'\n',不論Python程序在哪個操作系統下運行。在Linux環境下編寫C語言時,換行符爲'\n',而在windows下爲'\r\n'。編寫Python程序不用擔心這種因運行環境不同引起的不兼容問題。

四.用戶輸入以及格式化輸出字符串

  在Python中最常用的從鍵盤獲取輸入的函數是raw_input()和input()。但是這兩個函數有很大的區別:

  raw_input()以字符串的形式返回用戶輸入的一切內容;

  而input()卻不是這樣,它會根據輸入內容的形式確定返回的形式(可能有點拗口)。下面看個例子就明白了:

  

  從這個例子顯而易見可以看出兩者的區別,同樣輸入123,raw_input()返回的是字符串123,而input()返回的是整數123。個人建議一般情況下使用raw_input()獲取輸入,這樣能避免程序中出現一些不必要的麻煩。

  同C語言一樣,Python中也提供了格式化輸出。

  Python中的格式化輸出和C語言類似,基本格式如下:

  print '....%formmat..' %(var...)

  當var只有一個時,括號可以省略。

  

  關於Python的字符串今天就討論這麼多了,在這裏只是討論了基本的概念和知識點,相關字符串函數的使用請查閱API文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章