一、將某個對象轉換為字符串,有str()和repr()兩種方法
區別:
repr() 轉化為供解釋器讀取的形式
str() 轉化為適於人閱讀的形式
a = 123456 print('repr輸出:', repr(a)) print('str輸出:', str(a)) b = "Hello,\nworld" print('repr輸出:', repr(b)) print('str輸出:', str(b))
運行結果:
repr輸出: 123456
str輸出: 123456
repr輸出: 'Hello,\nworld'
str輸出: Hello,
world
二、長字符串跨行
可以用下面幾種方式
1、字符串用三引號'''、或三個雙引號"""括起來
a = '''Hello, world''' print(a)
運行結果:
Hello,
world
2、行尾加上反斜杠 \,運行結果和上面區別是字符串不換行
b = "Hello,\ world" print(b)
運行結果:
Hello,world
如果要指定以反斜杠結尾,需要再加2個反斜杠 \
b = "Hello,\\\ world" print(b)
運行結果:
Hello,\world
三、原始字符串,前綴加上r
print('c:\now') print(r'c:\now')
運行結果如下,原始字符串會原樣輸出:
c:
ow
c:\now
原始字符串不能以單個反斜杠 \結尾,如果要指定以反斜杠結尾,可以將反斜杠單獨作為作為一個字符串
print(r'c:\now''\\')
運行結果:
c:\now\
四、字符串的格式化
1、用百分比符號 % 表示,在%左邊指定一個字符串,在%右邊指定要設置格式的值。
指定要設置其格式的值(如字符串或數字)時,可使用單個值,也可使用元組、字典。
常用的幾個格式化符號:
%s 格式化字符串
%d 格式化整數
%f 格式化浮點數字,可指定小數點后的精度
print("Hello,%s" % "world") format = "%d %f %.2f" values = (2019, 2010, 2011) result = format % values #這里的%兩旁也可以不留空格 print(result)
運行結果:
Hello,world
2019 2010.000000 2011.00
2、模板字符串格式化,使用關鍵字參數賦值
from string import Template tmpl = Template("Hello, $who!$year") print(tmpl.substitute(who="world",year=2019))
運行結果:
Hello, world!2019
3、變量與替換字段同名,可使用簡寫,在字符串前面加上f
h = "Hello" w = "world" print(f"{h},{w}")
運行結果:
Hello,worlds
4、使用字符串方法format,每個替換字符用花括號{}表示
4.1精簡版
(1)未命名字段,直接花括號
a = "{},{}".format("Hello","world") print(a)
運行結果:
Hello,world
(2)索引
a = "{1},{0}, {1}".format("Hello","world") print(a)
運行結果:
world,Hello, world
(3)命名字段
a = "{h},{w}".format(h="Hello", w="world") print(a)
運行結果:
Hello,world
4.2完整版
完整版的格式化字符串中,替換字段由如下部分組成,其中每個部分都是可選的。
☐字段名:索引或標識符
☐轉換標志:跟在嘆號 ! 后面的單個字符。當前支持的字符包括r(repr)、s(str)和a(ascii)
☐格式說明符:跟在冒號 : 后面的表達式。可指定格式類型(如字符串、浮點數或十六進制數)字段寬度和數的精
度如何顯示符號和千位分隔符,以及各種對齊和填充方式。
(1)字段名
可同時混合使用未命名字段、命名字段,或者索引、命名字段
a = "{},{w}".format("Hello",w="world") print(a) b = "{0},{w}".format("Hello",w="world") print(b)
運行結果:
Hello,world
Hello,world
但不能同時混合使用未命名字段、索引。像下面代碼會出錯。
c = "{0},{}".format("Hello","world")
(2)轉換標志
print("{pi!s} {pi!r} {pi!a}".format(pi = "π"))
運行結果:
π 'π' '\u03c0'
(3)格式說明符
(a)指定值轉換為某種類型
a = "Hello,{w:s},{y:d},{y:f},{y:.2f},{y:b},{y:%}".format(w="world", y=2019) print(a)
運行結果:
Hello,world,2019,2019.000000,2019.00,11111100011,201900.000000%
一些類型說明符:
s 字符串格式,這是默認用於字符串的說明符
d 整數格式,這是整數默認使用的說明符
f 浮點數,默認6位小數,可在前面加.數字表示保留多少位小數
b 將整數表示為二進制數
% 將數表示為百分比值(乘以100,按說明符f設置格式,再在后面加%)
(b)設置寬度
■字符串在右邊填充空格,數字則在左邊填充空格;
print("{h:10},world".format(h="hello")) print("{y:10}end".format(y=2019))
運行結果:
hello ,world
2019end
■可同時指定寬度和精度;
print("{y:10.2f}end".format(y=2019))
運行結果:
2019.00end
■指定寬度的數前面可以添加一個標志,可以指定零、加號、減號、空格,其中0是填滿。
print("{:010.2f}".format(2019))
運行結果:
0002019.00
(c)對齊說明符:指定左對齊、右對齊和居中,可分別使用<、>和^
對齊說明符默認是用空格填充,可在對齊符號前面用指定字符來填充
print("{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}\n{0:->10.2f}".format(2019))
運行結果:
2019.00
2019.00
2019.00
---2019.00
(d)為數字加上符號,使用說明符+
print("{}\n{:+}\n{:+}".format(2019,2019, -2019))
運行結果:
2019
+2019
-2019
(e)井號符 :對於二進制、八進制、十六進制將加上前綴,對於十進制,加上小數點。
print("{0:b},{0:o},{0:x},{0:d}".format(10)) print("{0:#b},{0:#o},{0:#x},{0:#d}".format(10))
運行結果:
1010,12,a,10
0b1010,0o12,0xa,10
(f)千分比分隔符:用逗號分隔
a = "{:,}".format(123456789) print(a)
運行結果:
123,456,789
五、字符串方法列表
方法 | 描述 |
---|---|
把字符串的第一個字符大寫 |
|
返回一個原字符串居中,並使用空格填充至長度 width 的新字符串 |
|
返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數 |
|
以 encoding 指定的編碼格式解碼 string,如果出錯默認報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace' |
|
以 encoding 指定的編碼格式編碼 string,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
|
檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的范圍內是否以 obj 結束,如果是,返回 True,否則返回 False. |
|
把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8。 |
|
檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則返回-1 |
|
格式化字符串 |
|
跟find()方法一樣,只不過如果str不在 string中會報一個異常. |
|
如果 string 至少有一個字符並且所有字符都是字母或數字則返 回 True,否則返回 False |
|
如果 string 至少有一個字符並且所有字符都是字母則返回 True, 否則返回 False |
|
如果 string 只包含十進制數字則返回 True 否則返回 False. |
|
如果 string 只包含數字則返回 True 否則返回 False. |
|
如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False |
|
如果 string 中只包含數字字符,則返回 True,否則返回 False |
|
如果 string 中只包含空格,則返回 True,否則返回 False. |
|
如果 string 是標題化的(見 title())則返回 True,否則返回 False |
|
如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False |
|
以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串 |
|
返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串 |
|
轉換 string 中所有大寫字符為小寫. |
|
截掉 string 左邊的空格 |
|
maketrans() 方法用於創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。 |
|
返回字符串 str 中最大的字母。 |
|
返回字符串 str 中最小的字母。 |
|
有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string. |
|
把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次. |
|
類似於 find()函數,不過是從右邊開始查找. |
|
類似於 index(),不過是從右邊開始. |
|
返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串 |
|
類似於 partition()函數,不過是從右邊開始查找 |
|
刪除 string 字符串末尾的空格. |
|
以 str 為分隔符切片 string,如果 num 有指定值,則僅分隔 num+ 個子字符串 |
|
按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。 |
|
檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內檢查. |
|
在 string 上執行 lstrip()和 rstrip() |
|
翻轉 string 中的大小寫 |
|
返回"標題化"的 string,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle()) |
|
根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 del 參數中 |
|
轉換 string 中的小寫字母為大寫 |
|
返回長度為 width 的字符串,原字符串 string 右對齊,前面填充0 |