1.單引號字串和轉義引號
在python中,字串是用單引號或者雙引號括起來,在表示字串的時候,單引號和雙引號有什麼區別嗎?事實上並沒有。
在某些特殊情況時候,單引號和雙引號是不能換線交換的,比如在乙個字串中包含了雙引號,那麼這個字串就必須用單引號括起來,反之,乙個字串中包含了單引號,那麼這個字串就必須用雙引號括起來。否則會報錯。
當然,有時候我們並不需要這樣做,我們有另乙個選擇——使用反斜線(\)對字串中的引號經行轉義:
python會明白中間的單引號就是字串中的乙個字元,而不是字串的結尾,大家可能也已經猜到了,字串中的雙引號也可以用同樣的方式轉義。
但是有些情況需要同時用雙引號和單引號的時候,反斜線會顯得十分麻煩,後面會介紹通過使用長字串和原始字串來減少使用反斜線。
2.拼接字串
繼續研究剛剛的例子,我們可以通過另一種方式輸出字串:
我們可以用乙個接著另乙個的方式拼接字串。不過,它們只是在同時寫下兩個字串時候才有效,而且需要乙個接著另乙個:
換句話說,這只是乙個 特殊的拼接方法,如果需要一般的拼接字串的話,就像進行加法運算一樣:
3.字串表示,str和repr
前面的例子你可能已經注意到了,所有通過python列印的字串還是被括號括起來的。這是因為python列印出來的值都會保持在python**中的狀態,而不是你希望使用者看到的。如果使用print就不一樣了:
實際上我們是在討論值被轉換為字串的兩種機制,我們這裡可以通過兩個函式實現:一種是通過str函式,把值轉換成為合理形式的字串,以方便使用者理解;另一種就是通過repr函式,它會建立乙個字串,以合法的python表示式的形式來表示。下面是例子:
本處用str也可以實現。第乙個將temp的值轉換為2了和反引號一樣,所以得到了結果,而第二個不能工作,因為字串不可以和數字進行相加。
簡而言之,str,repe,反引號都是將字串的值轉換為字串。函式str轉換為便於閱讀的字串換,其他兩個轉換為標準的python表示式。
注意:python3.0以後就廢除了反引號,所以堅持使用repr()不用反引號。
4.input和raw_input的比較
name=input("what is your name?");
print 'hello.'+name+'!';
這個看起來是乙個合法的程式,但是執行的時候你會發現是不行的:
問題就在於input會假設使用者輸入的是標準的python表示式。如果輸入字串的話就可以執行:
當然,要求使用者輸入標準python表示式是比較過分的,所以就需要使用raw_input函式,他會把所有輸入的資料當做原始資料,然後放入字串中:
name=raw_input("what is your name?");
print 'hello.'+name+'!';
結果:
除非有特殊需要,否則盡量使用raw_input()。
5.長字串,原始字串和unicode
(1)長字串
如果需要寫乙個非常非常長的字串,它需要跨行,那麼就可以使用三個引號代替普通引號。
printf '''like
this'''
也可以使用三個雙引號,因為這種方式與眾不同,所以你可以在字串之中同時使用單引號和雙引號,而不需要使用反斜槓轉義。
(2)原始字串
原始字串不會對反斜線特殊對待,換句話說,原始字串中的輸入的每乙個字元都會與書寫方式保持一致。但是注意:原始字串的最後乙個字元不能使反斜線,除非你對反斜線轉義。
原始字串以r開頭,當然,我們也要像平常一樣對原始字串中的引號進行轉義:
print r' let\'s it go '
(3)unicode字串
python中的普通字串都是在8位以內的ascii碼形成儲存的,而unicode字元則儲存16位unicode字元,通過這個方法表示字符集。
unicode字串的字首為u,在python3.0中,所有的字串都是unicode.
python基礎之字串
1.基本字串的操作 所有標準序列的操作 索引,分片,乘法,成員資格判斷,求長度,取最小和最大值 同樣適用,但是記住 字串都是不可變的。2.字串格式化 精簡版 字串的格式化可以使用字串格式化操作符 百分號 來實現。在 的左側放置乙個字串 格式化字串 而右側放置希望被格式化的值。可以使用乙個值,如乙個字...
python基礎之字串
字串的鏈結操作 用 字串的複製操作 用 字串的索引操作 通過索引可以訪問制定的位置的字元,索引從0開始 索引 列如 a hello world print a 0 輸出的結果 是 h 字串的擷取操作 完整格式 開始索引 結束索引 間隔值 從開始擷取到索引結束之前 結束索引之前 從開始索引擷取到字串最...
Python基礎之字串
字串類似於元組,不能隨意修改,但可以用切片的方式間接修改 字串各種奇葩的內建方法 1.capitalize 將第乙個字母改為大寫 2.casefold 將所有字母改為小寫 3.center width 字串居中,空格填充 把字串的第乙個字元改為大寫 casefold 把整個字串的所有字元改為小寫 c...