Python 字符串用法總結


一、將某個對象轉換為字符串,有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

五、字符串方法列表

方法 描述

string.capitalize()

把字符串的第一個字符大寫

string.center(width)

返回一個原字符串居中,並使用空格填充至長度 width 的新字符串

string.count(str, beg=0, end=len(string))

返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數

string.decode(encoding='UTF-8', errors='strict')

以 encoding 指定的編碼格式解碼 string,如果出錯默認報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

string.encode(encoding='UTF-8', errors='strict')

以 encoding 指定的編碼格式編碼 string,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'

string.endswith(obj, beg=0, end=len(string))

檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的范圍內是否以 obj 結束,如果是,返回 True,否則返回 False.

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8。

string.find(str, beg=0, end=len(string))

檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則返回-1

string.format()

格式化字符串

string.index(str, beg=0, end=len(string))

跟find()方法一樣,只不過如果str不在 string中會報一個異常.

string.isalnum()

如果 string 至少有一個字符並且所有字符都是字母或數字則返

回 True,否則返回 False

string.isalpha()

如果 string 至少有一個字符並且所有字符都是字母則返回 True,

否則返回 False

string.isdecimal()

如果 string 只包含十進制數字則返回 True 否則返回 False.

string.isdigit()

如果 string 只包含數字則返回 True 否則返回 False.

string.islower()

如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False

string.isnumeric()

如果 string 中只包含數字字符,則返回 True,否則返回 False

string.isspace()

如果 string 中只包含空格,則返回 True,否則返回 False.

string.istitle()

如果 string 是標題化的(見 title())則返回 True,否則返回 False

string.isupper()

如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False

string.join(seq)

以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串

string.ljust(width)

返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串

string.lower()

轉換 string 中所有大寫字符為小寫.

string.lstrip()

截掉 string 左邊的空格

string.maketrans(intab, outtab])

maketrans() 方法用於創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。

max(str)

返回字符串 str 中最大的字母。

min(str)

返回字符串 str 中最小的字母。

string.partition(str)

有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.

string.rfind(str, beg=0,end=len(string) )

類似於 find()函數,不過是從右邊開始查找.

string.rindex( str, beg=0,end=len(string))

類似於 index(),不過是從右邊開始.

string.rjust(width)

返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串

string.rpartition(str)

類似於 partition()函數,不過是從右邊開始查找

string.rstrip()

刪除 string 字符串末尾的空格.

string.split(str="", num=string.count(str))

以 str 為分隔符切片 string,如果 num 有指定值,則僅分隔 num+ 個子字符串

string.splitlines([keepends])

按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。

string.startswith(obj, beg=0,end=len(string))

檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內檢查.

string.strip([obj])

在 string 上執行 lstrip()和 rstrip()

string.swapcase()

翻轉 string 中的大小寫

string.title()

返回"標題化"的 string,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle())

string.translate(str, del="")

根據 str 給出的表(包含 256 個字符)轉換 string 的字符,

要過濾掉的字符放到 del 參數中

string.upper()

轉換 string 中的小寫字母為大寫

string.zfill(width)

返回長度為 width 的字符串,原字符串 string 右對齊,前面填充0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM