01-Python的基礎知識4
- 字符串
- 字符串屬於不可變序列,一般使用單引號、雙引號或三引號進行界定,並且單引號,雙引號、三單引號、三雙引號還可以相互嵌套,用來表示復雜的字符串。
- 字符串類型是一類特殊的數據集對象,稱為序列。序列類型中的對象按一定順序排列,即對象序列。
- 構建字符串:
- 字符串構造函
- 使用函數str()
x = str(123) print(x,type(x)) y = str(u‘dd456dd‘) print(y,type(y)) #結果 # 123 <class ‘str‘> # dd456dd <class ‘str‘>
- 使用引號:
- 單引號:‘abc‘、‘a‘、‘123‘。
- 雙引號:"a"、"123"、"acs"。
- 單雙引號可以交錯使用
- 三單或者三雙:"‘Python"‘、"""Python"""。
- 三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。
- 帶 r或者R前綴的Raw字符串:r"abc\n123"。
- Python不會解析其中的轉義字符。典型應用在表示文件路徑。
# fl = open(‘d:\temp\newlist.py‘, ‘r‘)
#上面代碼會執行錯誤
fl = open(‘d:\\temp\\newlist.py‘, ‘r‘) #使用反斜杠表示轉義字符
fl = open(r‘d:\\temp\\newlist.py‘, ‘r‘) #使用Raw字符串表示文件名字字符串
fl = open(‘d:/temp/newlist.py‘, ‘r‘) # 使用正斜杠表示
- 帶 u或者U前綴的Unicode字符串:u"asdf"、U"asdss"。 以u或U開頭的字符串表示unicode字符串
- Unicode是書寫國際文本的標準方法。如果你想要用非英語寫文本,那麽你需要有一個支持Unicode的編輯器。
- 類似地,Python允許你處理Unicode文本——你只需要在字符串前加上前綴u或U。
print(u‘我‘) print(u‘458\t\tdd‘) #不能忽視轉義字符 #結果: #我 #458 dd
- 轉義字符
轉義字符 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜杠符號 |
\‘ | 單引號 |
\" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向制表符 |
\t | 橫向制表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數yy代表的字符,例如:\o12代表換行 |
\xyy | 十進制數yy代表的字符,例如:\x0a代表換行 |
\other | 其它的字符以普通格式輸出 |
- 訪問字符串中的值
s = "abc"
#直接訪問
print(s)
#註意有反斜杠的字符串,使用Raw字符串
s = "Let‘s go"
print(s)
s1 = "Let\‘s go"
print(s1)
- 字符串運算符
a = ‘123‘ b = ‘wwwas‘ print(a+b) print(a*2) print(b*2) # 123wwwas # 123123 # wwwaswwwas
- 字符串比較
- 兩個單字符之間的比較都會轉化為對應得ASCII值之間的關系。
- 使用ord()函數和chr()可以查看相應的ASCII碼。
#查看ASCII碼 print(ord(‘a‘)) print(chr(97)) #兩個字符的比較 print((‘a‘<‘b‘)) #結果: #97 #a #True
- 多字符之間:從索引為0的位置開始比較,若相等則索引值加一再比較,等待字符串結束。
v1 = "ab" < "abc" v2 = "ab" < "ac" v3 = "ab " < "ab" print(v1,v2,v3) #結果: #True True False
字符串格式化
- % 格式符方式
- 格式: %[(name)][flags][width].[precision]typecode - (name): 可選,用於選擇指定的ke - flags: 可選,可供選擇的值有: - +: 指定右對齊輸出 右對齊:正數前加正號,負數前加負號;
- -: 指定左對齊輸出
左對齊:正數前無符號,負數前加負號;
- 空格 ,
- 右對齊;正數前加空格,負數前加負號
- 右對齊;正數前無符號,負數前加負號;用0填充空白處
- width: 可選,占有寬度
- . precision: 可選,小數點後保留的位數
- typecode: 必選
- s,獲取傳入對象的__str__方法的返回值,並將其格式化到指定位置,字符串(采用str()顯示)
- r,獲取傳入對象的__repr__方法的返回值,並將其格式化到指定位置,字符串(采用repr()顯示)
- c,單個字符
- 整數:將數字轉換成其unicode對應的值,10進制範圍為 0 <= i <= 1114111(py27則只支持0-255);
- 字符:將字符添加到指定位置
- b, 二進制整數
- o,八進制整數
- 將整數轉換成八進制表示,並將其格式化到指定位置
- x,十六進制整數
- 將整數轉換成十六進制表示,並將其格式化到指定位置
- d,十進制整數
- 將整數、浮點數轉換成 十 進制表示,並將其格式化到指定位置
- e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e)
- E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E)
- f, 將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位)
- F,同上
- g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置 (如果是科學計數則是e;)
- G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置 (如果是科學計數則是E;)
- %,當字符串中存在格式化標誌時,需要用 %%表示一個百分號
#字符串格式化 #%d 此處應該放入一個整數 %s 此處應該放入一個字符串 s = "I love %s" print(s) print("I love %s" % "china") print(s%"china") s = "I am %d years old" print(s) print(s%18) s = "I am %s,I am %d yera old" print(s) print(s%("shuai ge",18)) #如果出現多個占位符,則相應的內容需要用括號括起來。有幾個占位符就應該用幾個實際的內容代替,或者不要 #Let‘s go #Let‘s go #I love %s #I love chinaI love china #I am %d years old #I am 18 years old #I am %s,I am %d yera old #I am shuai ge,I am 18 yera old
format函數格式化字符串
- 直接用format 函數進行格式化
- 使用:以大括號{}和冒號: 代替%。
- :[[fill]align][sign][#][0][width][,][.precision][type]
- 匹配操作:
- 通過位置匹配
#通過索引的方式進行匹配 s = "{0},{1}".format("first","second") print(s) s = "{1},{0}".format("first","second") print(s) #結果 #first,second #second,first
- 通過名稱匹配
#名稱一一對應,也可以使用字典 s = "{0},{name}".format("first",name="jack") print(s) #結果 #first,jack
- 通過下標匹配
list1=[1,2,3] s = "{0[0]},{0[1]}".format(list1) print(s) #結果 #1,2
- 其他
age = 18 name = "xiaoming" s = "{name} {age} years old".format(**locals()) print(s) #結果 #xiaoming 18 years old
- 格式規約:使用(:)引入的,其後可以跟隨可選的字符對。
/* - fill 【可選】空白處填充的字符 - align 【可選】對齊方式(需配合width使用) - <,內容左對齊 - >,內容右對齊(默認) - =,內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。 即使:符號+填充物+數字 - ^,內容居中 */
s = "left],{:<15},[right".format(789456) print(s) s = "left],{:>15},[right".format(789456) print(s) s = "left],{:^15},[right".format(789456) print(s) #填充 s = "left],{:.<15},[right".format("789456") print(s) s = "left],{:*>15},[right".format("789456") print(s) s = "left],{:/^15},[right".format("789456") print(s) #是否字符串都能夠使用 #結果 #left],789456 ,[right #left], 789456,[right #left], 789456 ,[right #left],789456.........,[right #left],*********789456,[righ
s = "left],{0:0=15},[right".format(789456) print(s) s = "left],{:0=15},[right".format(-789456) print(s) s = "left],{0:015},[right".format(789456) print(s) s = "left],{0:015},[right".format(-789456) print(s) #結果 #left],000000000789456,[right #left],-00000000789456,[right #left],000000000789456,[right #left],-00000000789456,[right
/* - sign 【可選】有無符號數字 - +,正號加正,負號加負; - -,正號不變,負號加負; - 空格 ,正號空格,負號加負 - # 【可選】對於二進制、八進制、十六進制,如果加上#,會顯示 0b/0o/0x,否則不顯示 - , 【可選】為數字添加分隔符,如:1,000,000 - width 【可選】格式化位所占寬度 - .precision 【可選】小數位保留精度 - type 【可選】格式化類型 - 特例 %,顯示百分比(默認顯示小數點後6位) */
01-Python的基礎知識4