1、單引號字符串和轉義符
字符串和數字一樣都是值,可以直接使用,在python控制台中直接輸入字符串,如“hello world”,會按原樣輸出該字符串,只不過用單引號擴了起來
>>> "Hello World" 'Hello World'
那么用雙引號和單引號括起來的字符串有什么區別呢?其實沒有任何區別,只不過在輸出單引號或雙引號時方便而已。例如,在python控制台輸入‘let's go!’,會拋出如下的錯誤
>>> 'Let's go!' File "<stdin>", line 1 'Let's go!' ^ SyntaxError: invalid syntax
這是因為python解析器無法判斷字符串中間的單引號是正常的字符,還是多余的引號,所以會拋出語法錯誤異常,要輸出單引號的方法很多,其中之一就是使用雙引號將字符串括起來
>>> "Let's go!" "Let's go!"
現在輸入單引號是解決了,如何輸出雙引號呢,只需要用單引號將字符串括起來就好
>>> '我們應該在文本框中輸入"Python"' '我們應該在文本框中輸入"Python"'
現在輸入單引號和輸出雙引號都解決了,如何同時輸出單引號和雙引號呢?對於這種需求,就要使用本節要介紹的另外一個知識點:轉義符。python語言中的轉義符是反斜杠\。轉義符的功能是告訴python解釋器反斜杠后面的是字符串中的一部分,而不是用於將字符串括起來的單引號和雙引號。所以如果字符串同時包含單引號和雙引號,那么轉義符是必須的。
print('Let\'s go!. \"一起走天涯\"') # Let's go!. "一起走天涯"
在上面這行代碼中,單引號和雙引號都是用的轉義符,其實在這個例子中,由於字符串是由單引號括起來的,所以如果里面包含雙引號,是不需要對雙引號使用轉義符的
下面的例子演示了python語言中單引號和雙引號的用法,以及轉義符在字符串中的應用
實例位置:PythonSamples\src\chapter2\demo2.10.py # 使用單引號的字符串,輸出結果:Hello World print('Hello World') # 使用雙引號的字符串,輸出結果:Hello World print("Hello World") # 字符串中包含單引號,輸出結果:Let's go! print("Let's go!") # 字符串中包含雙引號,輸出結果:"一起走天涯" print('"一起走天涯"') # 字符串中同時包含單引號和雙引號,其中單引號使用了轉義符,輸出結果:Let's go! "一人我飲酒醉" print('Let\'s go! "一人我飲酒醉" ')
2、拼接字符串
在輸出字符串時,有時字符串會很長,在這種情況下,可以將字符串寫成多個部分,然后拼接到一起,我們可以嘗試下面的一種寫法
>>> 'Hello' 'world' 'Helloworld'
這種寫法是將兩個字符串挨着寫到一起,字符串中間可以有0到n個空格。現在讓我們看看這種方式能否將兩個字符串變量的值組合到一起
>>> x = 'hello' >>> y = 'world' >>> x y File "<stdin>", line 1 x y ^ SyntaxError: invalid syntax
我們可以看到,如果是兩個字符串類型的變量緊挨着寫在一起,python解釋器就會認為是語法錯誤,所以這種方式實際上並不是字符串的拼接,只是一種寫法而已,而且這種寫法必須是兩個或多個字符串值寫在一起,而且不能出現變量,否則python解釋器就會認為是語法錯誤
如果要連接字符串,要用加號(+),也就是字符串的加法運算
>>> x = 'Hello ' >>> x + 'World' 'Hello World'
下面的代碼演示了字符串拼接的方法
#將字符串寫到一起輸出,運行結果:helloworld世界你好 print("hello""world""世界你好") x="hello"#聲明字符串變量x y="world"#聲明字符串變量y #print(x y)#拋出異常,變量不能直接寫到一起 print(x+y)#字符串拼接,要使用加號(+),運行結果:helloworld
3、保持字符串的原汁原味
在前面的文章講過轉義符\的應用,其實轉義符不光能輸出單引號和雙引號,還能控制字符串的格式,例如,使用‘\n’表示換行,如果在字符串中含有‘\n’,那么‘\n’后的所有字符都會被移到下一行
>>> print('Hello\nWorld') Hello World
如果要混合輸出數字和字符串,並且換行,可以先用str函數將數字轉換為字符串,然后在需要換行的地方加上‘\n’
>>> print(str(1234) + "\n" + str(4321)) 1234 4321
不過有的時候,我們不希望python解釋器轉義特殊字符,希望按原始字符串輸出,這時需要使用repr函數
>>> print(repr("Hello\nWorld")) 'Hello\nWorld'
使用repr函數輸出的字符串,會使用一對單括號括起來
其實如果只想輸出“\n”或其他類似的轉義符,也可以使用兩個反斜杠輸出“”,這樣“”后面的n就會被認為是普通的字符了
>>> print("Hello\\nWorld") Hello\nWorld
除了前面介紹的repr和轉義符外,在字符串前面加‘r’也可以原樣輸出字符串
>>> print(r"Hello\nWorld") Hello\nWorld
現在總結一下,如果讓一個字符串按原始內容輸出(不進行轉義),有如下三種方法
repr函數
轉義符()
在字符串前面加‘r’
下面的例子演示了str和repr函數的用法
# 輸出帶“\n"的字符串,運行結果:<hello # world> print("<hello\nworld>") # 用str函數將1234轉換為數字,運行結果:1234 print(str(1234)) # 拋出異常,len函數不能直接獲取數字的長度 #print(len(1234)) # 將1234轉換為字符串后,獲取字符串長度,運行結果:4 print(len(str(1234))) # 運行結果:<hello # world> print(str("<hello\nworld>")) # 運行結果:13 print(len(str("<hello\nworld>"))) # 運行結果:'<hello\nworld>' print(repr("<hello\nworld>")) # 運行結果:16 print(len(repr("<hello\nworld>"))) # 使用轉義符輸出“\”,輸出的字符串不會用單引號括起來,運行結果:hello\nworld print("<hello\\nworld>") # 運行結果:14 print(len("<hello\\nworld>")) # 在字符串前面加“r”,保持字符串原始格式輸出,運行結果:hello\nworld print(r"<hello\nworld>") # 運行結果:14 print(len(r"<hello\nworld>"))
我們可以看到,使用repr函數輸出的“<hello\nworld>”字符串被一對單引號括了起來,而且字符串長度是16。而使用str函數輸出同樣的字符串,長度是13。在str函數輸出的字符串中,‘\n’算一個字符,長度為1,而用repr函數輸出的字符串中,‘\n’是兩個字符,長度為2。再加上一對單引號,所以長度是16。
4、長字符串
在前面的文章講過轉義符\的應用,其實轉義符不光能輸出單引號和雙引號,還能控制字符串的格式,例如,使用‘\n表示換行’,如果在字符串中含有‘\n’,那么‘\n’后的所有字符都會被移到下一行
在前面的文章講了使用3個單引號或雙引號括起來的文本會成為多行注釋,其實如果將這樣的字符串使用print函數輸出,或賦給一個變量,就會成為一個長字符串。在長字符串中會保留原始的格式
print("""Hello # 長字符串,會按原始格式輸出 World""");
如果使用長字符串表示一個字符串,中間可以混合使用雙引號和單引號,而不需要加轉義符
print("""Hell"o" # 長字符串,中間混合使用雙引號和單引號 W'o'rld"""
下面的例子演示了長字符串的用法
print('''I # 使用3個單引號定義長字符串 'love' "Python" ''' ) s = """Hello # 使用雙引號定義長字符串 World 世界 你好 """ print(s) # 輸出長字符串 print("Hello\ # 每行字符串在回車符之前用轉義符,就可以將字符串寫成多行 World")