1、單引號字符串和轉義引號python
當字符串中出現單引號'時,咱們能夠用雙引號""將該字符串引發來:"Let's go!"shell
而當字符串中出現雙引號時,咱們能夠用單引號''將該字符串引發來:' "Hello,world!" she said 'ide
可是當字符串中又有單引號'又有雙引號"時該如何處理呢:使用反斜線(\)對字符串中的引號進行轉義:'Let\'s go!'函數
2、字符串spa
>>>"Let's say" ' "Hello,world!" ' 'Let\'s say "Hello,world!" '
>>>x="hello,"
>>>y="world!"
>>>x y
SyntaxError: invalid syntax
>>>"hello,"+"world!"
'hello,world!'
>>>x+y
'hello,world!'
上面只是一個接着一個的方式寫了兩個字符串,Python就會自動拼接它們,可是若是賦值給變量再用這種方式拼接則會報錯,由於這僅僅是書寫字符串的一種特殊方法,並非拼接字符串的通常方法;這種機制用的很少。用"+"好能夠進行字符串的拼接;code
2.字符串表示,str和reprblog
>>>print repr("hello,world!") 'hello,world!' >>>print repr(10000L) 10000L >>>print str("Hello,world!") Hello,world! >>>print str(10000L) 10000
str和int、bool同樣,是一種類型,而repr僅僅是函數,repr(x)也能夠寫做`x`實現(注意,`是反引號,不是單引號);不過在Python3.0中已經再也不使用反引號了。所以,即便在舊的代碼中應該堅持使用repr。字符串
3.input和raw_input的比較input
input會假設用戶輸入的是合法的Python表達式,好比輸入數值1,程序不會看成是str,而是看成int類型,輸入x,程序會看成用戶輸入的是變量x,若是輸入"x",程序纔會人但是字符串;string
raw_input函數它會把全部的輸入看成原始數據,而後將其放入字符串中。
>>> name=input("what is your name ?");print name what is your name ?Allen Traceback (most recent call last): File "<pyshell#22>", line 1, in <module> name=input("what is your name ?");print name File "<string>", line 1, in <module> NameError: name 'Allen' is not defined >>> name=input("what is your name ?");print name what is your name ?"Allen" Allen >>>input("Enter a number:") Enter a number:3 3 >>>raw_input("Enter a number:") Enter a number:3 '3'
四、長字符串
若是須要寫很是長的字符串,它須要跨多行,那麼可使用三個引號代替普通引號。
1 print '''This is very long string. 2 It continues here . 3 And it's not over yet. 4 Still here.''' 5 #也可使用三個雙引號,例如: 6 """Like This"""
由於這種不同凡響的引用方式,你能夠在字符串之間同時使用單引號和雙引號,而不須要使用反斜線進行轉義。
普通字符串也能夠跨行。若是一行之中最後一個字符是反斜線,那麼換行符自己"轉義"了,也就是被忽略了,例如:
print "Hello,\ world!" #上句會打印Hello,world!。這個用法也適用於表達式和語句: >>>1+2+\ 4+5 12 >>>print \ 'Hello,world' Hello,world
五、原始字符串
\反斜線有轉義的功能,\n表示換行符,若是打印一個路徑,例如:
>>>print 'C:\nowhere' #打印結果以下 C: owhere
#咱們能夠經過反斜線進行轉義,改成:
>>>print 'C:\\nowhere'
可是若是對於長路徑,那麼須要不少的反斜線,這樣原始字符串就派上用場了。
原始字符不會把反斜線看成特殊字符串。
>>>print r'C:\nowhere' C:\nowhere >>>print r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz' C:\Program Files\fnord\foo\bar\baz\frozz\bozz
固然咱們也要像日常同樣對引號進行轉義,可是,最後的輸出的字符串也包含了轉義所用的反斜線
>>> print r'Let's go SyntaxError: invalid syntax >>> print r'Let\'s go' Let\'s go
可是不能在原始字符串結尾輸入反斜線。
print r"This is illegal\"
上面寫法會報錯,參照上一個範例這是一個顯而易見的結論。最後一個字符是反斜線,Python就不清楚是否應該結束字符串。
但若是字符串最後一個字符確實是\,可使用一個技巧解決上述問題
print r'C:\Program Files\foo\bar' '\\'
C:\Program Files\foo\bar\
六、Unicode字符串
Pyhon 中的普通字符串在內部是以8位的ASCII碼造成存儲的,而Unicode字符串則存儲爲16位Unicode字符,這樣就可以表示更多的字符集了,包括世界上大多數語音的特殊字符,例子:
>>>u'Hello,world!' u'Hello,world!'
能夠看到,Unicode字符串使用u前綴,就像原始字符串使用r同樣。