程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 字符串str詳解(超詳細)

編輯:Python

文章目錄

  • Python內置函數/方法詳解—字符串str
    • 1、創建字符串
      • 1.1 使用 ' ' 或 " " 創建字符串
      • 1.2 使用 str()函數 轉換為字符串
    • 2、訪問字符串
      • 2.1 下標索引訪問
      • 2.2 切片訪問
      • 2.3 for循環遍歷字符串
      • 2.4 檢查元素是否存在
    • 3、字符串基礎知識
      • 3.1 字符串更新
      • 3.2 字符串連接(合並)/復制(重復)
      • 3.3 轉義字符
      • 3.4 打印原始字符 r / R
      • 3.5 格式字符串
      • 3.6 三引號
      • 3.7 f-string
      • 3.8 Unicode 字符串
    • 4、內置函數
      • 4.1 打印輸出 print()
      • 4.2 確定字符串長度 len()
      • 4.3 返回變量類型 type()
      • 4.4 轉換為字符串 str()
      • 4.5 字符串最大/小字符 max()、min()
      • 4.6 刪除字符串 del
    • 5、內置方法
      • 5.1 轉換
        • 5.1.1 字符(串)轉換 capitalize()、casefold()、lower()、upper()、title()、swapcase()
        • 5.1.2 判斷大小寫 islower()、isupper()、istitle()
      • 5.2 搜索值
        • 5.2.1 返回出現次數 count()
        • 5.2.2 從左搜索並返回 find()、index()
        • 5.2.3 從右搜索並返回 rfind()、rindex()
      • 5.3 以 str 開頭/結束 startswith()、endswith()
      • 5.4 編/解碼 encode()、decode()
      • 5.5 填充對齊 center()、ljust()、rjust()、zfill()
      • 5.6 刪除左/右指定字符 lstrip()、rstrip()、strip()
      • 5.7 判斷字符(串)
        • 5.7.1 空白字符 isspace()
        • 5.7.2 可打印 isprintable()
        • 5.7.3 標識符 isidentifier()
        • 5.7.4 字母/數字 isalnum()
        • 5.7.5 字母/中文 isalpha()
        • 5.7.6 數字 isdigit()、isnumeric()、isdecimal()
      • 5.8 格式字符串中指定值 format()、format_map()
      • 5.9 拆分/截取字符串 split()、rsplit()、splitlines()
      • 5.10 拆分字符串(返回元組) partition()、rpartition()
      • 5.11 字符串轉換 maketrans()、translate()
      • 5.12 元組項目連接到字符串 join()
      • 5.13 字符串替換 replace()
      • 5.14 字符串 Tab 轉換 expandtabs()
    • 6、總結

Python內置函數/方法詳解—字符串str

字符串是Python中最常用的數據類型

1、創建字符串

1.1 使用 ’ ’ 或 " " 創建字符串

創建字符串很簡單,我們可以使用引號(’ ’ 或 " ")來創建字符串,只需為變量分配一個值即可。

str1 = 'Hello Python'
str2 = "hello python"

1.2 使用 str()函數 轉換為字符串

當然,除了使用引號直接創建字符串之外,我們還可以使用 str() 函數將其他數據類型或對象轉換為字符串,其具體用法見下方內置函數。

2、訪問字符串

和列表、元組一樣,我們既可以使用下標索引訪問字符串中的某個元素(得到是一個字符),也可以使用切片訪問字符串中的一組元素(得到是子字符串)。

2.1 下標索引訪問

下標索引訪問字符串分為兩大類,即正向索引反向索引,格式為 str_name[i] ,其中,str_name 表示字符串名,i表示索引值,i可以是正數(正向索引)也可以是負數(反向索引)。

可以得知,str_name[0]表示字符串的第一個字符str_name[-1]則表示字符串的最後一個字符

str1 = 'Hello Py'
print(str1[0])
print(str1[-1])
H
y

正向索引:從第一個(下標0)開始、第二個(下標1)…

反向索引:從倒數第一個(下標-1)、倒數第二個(下標-2)…

2.2 切片訪問

如若對上方描述不太理解,可參考下表:

字符串值HelloPy正向索引01234567反向索引-8-7-6-5-4-3-2-1

Python訪問子字符串,可以使用中括號 [ ] 來截取字符串,即切片訪問。

使用切片訪問字符串的格式為 str_name[strat : end : step] ,其中,start 表示起始索引,end 表示結束索引,step 表示步長。

str1 = 'Hello Py'
print(str1[0:5])
print(str1[-8:-1])
print(str1[:])
print(str1[::2])
Hello
Hello P
Hello Py
HloP

截取字符串的一部分,遵循左閉右開原則,str[0:2] 是不包含第 3 個字符的。

2.3 for循環遍歷字符串

使用 for 循環遍歷字符串時,將會輸出字符串中的每一個字符。

str_h = 'Hi Py'
for char in str_h:
print(char)
H
i
P
y

2.4 檢查元素是否存在

如果我們需要確定在一個字符串中,是否存在相同的字符或者子字符串,可以使用成員運算符中的 innot in 關鍵字。

關鍵字描述in如果字符串中包含給定的字符返回 True。not in如果字符串中不包含給定的字符返回 True。
str1 = 'Hello Python'
print('H' in str1)
print('Python' not in str1)
True
False

3、字符串基礎知識

3.1 字符串更新

我們可以截取字符串的一部分並與其他字段拼接,如下實例:

str1 = 'Hello World'
print(str1[:6] + 'Python')
Hello Python

3.2 字符串連接(合並)/復制(重復)

同列表和元組一樣,字符串之間可以使用 + 號和 * 號分別實現字符串的連接(合並)和復制(重復),這意味著它們可以生成一個新的字符串。

1、+連接(合並)

a = 'Hello'
b = 'Python'
print(a + b)
HelloPython

2、*復制(重復)

c = 'Hello'
print(c * 5)
HelloHelloHelloHelloHello

3.3 轉義字符

如果需要在字符中使用特殊字符時,則使用反\斜槓 \ 轉義字符,如下表:

3.4 打印原始字符 r / R

原始字符串:所有的字符串都是直 接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。

原始字符串除在字符串的第一個引號前加上字母 r / R (可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。

print(r'\n')
print(R'\n')
print(r'\t')
print(r'\a')
\n
\n
\t
\a

3.5 格式字符串

Python支持格式化字符串的輸出。盡管這樣可能會用到非常復雜的表達式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。

print('我叫 %s ,今年 %d 歲!' % ('pink', 21))
我叫 pink ,今年 21 歲!

在Python中,字符串格式化使用與 C語言 中 printf() 函數一樣的用法。

Python字符串格式化符號如下表所示:

符 號描述%c格式化字符及其ASCII碼%s格式化字符串%d格式化整數%u格式化無符號整型%o格式化無符號八進制數%x格式化無符號十六進制數%X格式化無符號十六進制數(大寫)%f格式化浮點數字,可指定小數點後的精度%e用科學計數法格式化浮點數%E作用同%e,用科學計數法格式化浮點數%g%f和%e的簡寫%G%f 和 %E 的簡寫%p用十六進制數格式化變量的地址

格式化操作符輔助指令:

符號功能*定義寬度或者小數點精度-用做左對齊+在正數前面顯示加號( + )<sp>在正數前面顯示空格#在八進制數前面顯示零(‘0’),在十六進制前面顯示’0x’或者’0X’(取決於用的是’x’還是’X’)0顯示的數字前面填充’0’而不是默認的空格%‘%%‘輸出一個單一的’%’(var)映射變量(字典參數)m.n.m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。

3.6 三引號

Python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。實例如下:

str1 = """這是一個多行字符串 多行字符串可以使用制表符 TAB[\t] 也可以使用換行符[\n] """
print(str1)
這是一個多行字符串
多行字符串可以使用制表符
TAB[ ]
也可以使用換行符[
]

三引號讓程序員從引號和特殊字符串的泥潭裡面解脫出來,自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的。

當你需要一塊HTML或者SQL時,這時用字符串組合,特殊字符串轉義將會非常的繁瑣。

errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> '''
cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')

3.7 f-string

f-string 是 python3.6 之後版本添加的,稱之為字面量格式化字符串,是新的格式化字符串的語法。

之前我們習慣用百分號 (%):

name = 'pink'
print('Hello %s' % name)

f-string 格式化字符串以 f 開頭,後面跟著字符串,字符串中的表達式用大括號 {} 包起來,它會將變量或表達式計算後的值替換進去,實例如下:

name = 'pink'
print(f'Hello {
name}')
print(f'{
1 + 2}')
baidu = {
'name': 'Baidu', 'url': 'https://www.baidu.com'}
print(f'{
baidu["name"]}:{
baidu["url"]}')
Hello pink
3
Baidu:https://www.baidu.com

用了這種方式明顯更簡單了,不用再去判斷使用 %s,還是 %d。

在 Python 3.8 的版本中可以使用 = 符號來拼接運算表達式與結果:

x = 1
print(f'{
x + 1}')
y = 1
print(f'{
x + 1 = }')
2
x + 1 = 2

3.8 Unicode 字符串

在Python2中,普通字符串是以8位ASCII碼進行存儲的,而Unicode字符串則存儲為16位unicode字符串,這樣能夠表示更多的字符集。使用的語法是在字符串前面加上前綴 u

在Python3中,所有的字符串都是Unicode字符串。

4、內置函數

4.1 打印輸出 print()

1、print()函數

print() 函數的功能我們已經非常熟悉了,就是打印輸出。

str1 = 'Hello Python'
print(str1)
Hello Python

4.2 確定字符串長度 len()

2、len()函數

當我們要確定一個字符串中有多少個字符時,我們可以使用 len() 函數。

str2 = 'Hello Python'
print(len(str2))
12

4.3 返回變量類型 type()

3、type()函數

使用 type() 函數可以確定變量是什麼類型(字符串、列表、元組、字典或集合)。

str3 = 'Hello Python'
print(type(str3))
<class 'str'>

當對 str3 使用 type() 確定變量類型時,會返回 <class 'str'> ,表明這是一個字符串。

4.4 轉換為字符串 str()

4、str()函數

我們可以使用 str() 函數將列表、元組、字典、集合和區間等對象轉換為字符串,以下將會一一介紹:

  • 列表轉換為字符串
list1 = ['a', 'b', 'c']
print(type(str(list1)))
print(str(list1))
<class 'str'>
['a', 'b', 'c']
  • 元組轉換為字符串
tuple1 = ('A', 'B', 'C')
print(type(str(tuple1)))
print(str(tuple1))
<class 'str'>
('A', 'B', 'C')
  • 字典轉換為字符串
dict1 = {
'name': 'pink'}
print(type(str(dict1)))
print(str(dict1))
<class 'str'>
{
'name': 'pink'}
  • 集合轉換為字符串
set1 = {
'name', 'gender'}
print(type(str(set1)))
print(str(set1))
<class 'str'>
{
'name', 'gender'}
  • 區間轉換為字符串
range1 = range(0, 10)
print(type(str(range1)))
print(str(range1))
<class 'str'>
range(0, 10)

4.5 字符串最大/小字符 max()、min()

5、max()函數和min()函數

max() 函數的作用是返回字符串中最大的字符。min() 函數的作用是返回字符串中最小的字符。

str_m = 'AazZ'
print(max(str_m))
print(min(str_m))
z
A

4.6 刪除字符串 del

在Python中,del 函數並不支持刪除字符串中的單個字符,但我們可以使用 del 函數刪除整個字符串:

str1 = 'Hello Python'
del str1
print(str1)

當我們使用 del 函數刪除某字符串後,如果再使用 print() 函數打印輸出時,會報錯NameError: name 'str1' is not defined,表明該字符串未被定義。

5、內置方法

5.1 轉換

5.1.1 字符(串)轉換 capitalize()、casefold()、lower()、upper()、title()、swapcase()

1、 capitalize()方法

capitalize() 將字符串的第一個字母變成大寫,其他字母變小寫。

語法

string.capitalize()

參數值

無參數

實例

str1 = 'hello python'
print(str1.capitalize())
Hello python

2、casefold()方法

casefold() 方法返回一個字符串,其中所有字符均為小寫。

語法

string.casefold()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.casefold())
hello python

此方法與 lower() 方法相似,但是 casefold() 方法更強大,更具攻擊性,這意味著它將更多字符轉換為小寫字母,並且在比較兩個用 casefold() 方法轉換的字符串時會找到更多匹配項。

3、lower()方法

lower() 方法轉換字符串中所有大寫字符為小寫(符號和數字將被忽略)。

語法

string.lower()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.lower())
hello python

4、upper()方法

upper() 方法將字符串中的小寫字母轉為大寫字母(符號和數字將被忽略)。

語法

string.upper()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.upper())
HELLO PYTHON

5、title()方法

title() 方法返回"標題化"的字符串,就是說所有單詞的首個字母轉化為大寫,其余字母均為小寫。

語法

string.title()

參數值

無參數

實例

str1 = 'HELLO Python'
print(str1.title())
Hello Python

6、swapcase()方法

swapcase() 方法用於對字符串的大小寫字母進行轉換,即將大寫字母轉換為小寫字母,小寫字母會轉換為大寫字母。

語法

string.swapcase()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.swapcase())
hELLO pYTHON

5.1.2 判斷大小寫 islower()、isupper()、istitle()

1、islower()方法

islower() 方法檢測字符串是否由小寫字母組成。

語法

string.islower()

參數值

無參數

str1 = 'Hello Python'
print(str1.islower())
False

如果所有字符均為小寫,則 islower() 方法返回 True,否則返回 False。不檢查數字、符號和空格,僅檢查字母字符。

2、isupper()方法

isupper() 方法檢測字符串中所有的字母是否都為大寫。

語法

string.isupper()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.isupper())
False

如果所有字符均大寫,則 isupper() 方法返回 True,否則返回 False。不檢查數字、符號和空格,僅檢查字母字符。

3、istitle()方法

istitle() 方法檢測字符串中所有的單詞拼寫首字母是否為大寫,且其他字母為小寫。

語法

string.istitle()

參數值

無參數

實例

str1 = 'Hello Python'
print(str1.istitle())
True

如果文本中的所有單詞均以大寫字母開頭,而單詞的其余部分均為小寫字母,則 istitle() 方法返回 True。否則返回 False。符號和數字將被忽略。

5.2 搜索值

5.2.1 返回出現次數 count()

count()方法

count() 方法用於統計字符串裡某個字符出現的次數。可選參數為在字符串搜索的開始與結束位置。

語法

string.count(value, start, end)

參數值

參數描述value必需。字符串。要檢索的字符串。start可選。整數。開始檢索的位置。默認是 0。end可選。整數。結束檢索的位置。默認是字符串的結尾。

實例

txt = "I love apples, apple are my favorite fruit"
print(txt.count("apple", 10, 24))
1

5.2.2 從左搜索並返回 find()、index()

1、find()方法

find() 方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內,如果指定范圍內如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回 -1

語法

string.find(value, start, end)

參數值

參數描述value必需。要檢索的值。start可選。開始檢索的位置。默認是 0。end可選。結束檢索的位置。默認是字符串的結尾。

實例

  • 字母 “e” 在文本總首次出現的位置:
txt = "Hello, welcome to my world."
x = txt.find("e")
print(x)
1
  • 如果只搜索位置 5 到 10 時,字母 “e” 在文本總首次出現的位置:
txt = "Hello, welcome to my world."
x = txt.find("e", 5, 10)
print(x)
8
  • 如果找不到該值,則 find() 方法返回 -1,但是 index() 方法將引發異常:
txt = "Hello, welcome to my world."
print(txt.find("q"))
print(txt.index("q"))
Traceback (most recent call last):
File "C:\Users\MK\Desktop\Python方法\str.py", line 4, in <module>
print(txt.index("q"))
ValueError: substring not found
-1

2、index()方法

index() 方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內,該方法與 find() 方法一樣,只不過如果str不在 string中會報一個異常

語法

string.index(value, start, end)

參數值

參數描述value必需。要檢索的值。start可選。在哪裡開始檢索。默認是 0。end可選。在哪裡結束檢索。默認是字符串的末尾。

實例

  • 字母 “e” 在文本中首次出現在哪裡?
txt = "Hello, welcome to my world."
x = txt.index("e")
print(x)
1
  • 如果只在位置 5 和 10 之間搜索時,字母 "e"首次首先在哪裡?
txt = "Hello, welcome to my world."
x = txt.index("e", 5, 10)
print(x)
8
  • 如果找不到該值,則 find() 方法返回 -1,但是 index() 方法將引發異常:
txt = "Hello, welcome to my world."
print(txt.find("q"))
print(txt.index("q"))
-1
Traceback (most recent call last):
File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>
print(txt.index("q"))
ValueError: substring not found

3、find()index() 區別

find() 方法與 index() 方法幾乎相同,唯一的區別是,如果找不到該值,index() 方法將引發異常,則 find() 方法將返回 -1

5.2.3 從右搜索並返回 rfind()、rindex()

1、rfind()方法

rfind() 返回字符串最後一次出現的位置,如果沒有匹配項則返回 -1

語法

string.rfind(value, start, end)

參數值

參數描述value必需。要檢索的值。start可選。從何處開始檢索。默認是 0。end可選。在何處結束檢索。默認是到字符串的末尾。

實例

  • 在哪裡最後出現文本中的字母 “e”?
txt = "Hello, welcome to my world."
x = txt.rfind("e")
print(x)
13
  • 如果只在位置 5 和位置 10 之間搜索,文本中最後出現的字母 “e” 在何處?
txt = "Hello, welcome to my world."
x = txt.rfind("e", 5, 10)
print(x)
8
  • 如果找不到該值,則 rfind() 方法返回 -1,但是 rindex() 方法將引發異常:
txt = "Hello, welcome to my world."
print(txt.rfind("q"))
print(txt.rindex("q"))
-1
Traceback (most recent call last):
File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>
print(txt.rindex("q"))
ValueError: substring not found

2、rindex()方法

rindex() 返回子字符串 str 在字符串中最後出現的位置,如果沒有匹配的字符串會報異常,你可以指定可選參數[beg:end]設置查找的區間。

語法

string.rindex(value, start, end)

參數值

參數描述value必需。要檢索的值。start可選。從何處開始檢索。默認是 0。end可選。在何處結束檢索。默認是到字符串的末尾。

實例

  • 在哪裡最後出現文本中的字母 “e”?
txt = "Hello, welcome to my world."
x = txt.rindex("e")
print(x)
13
  • 如果只在位置 5 和位置 10 之間搜索,文本中最後出現的字母 “e” 在何處?
txt = "Hello, welcome to my world."
x = txt.rindex("e", 5, 10)
print(x)
8
  • 如果找不到該值,則 rfind() 方法返回 -1,但是 rindex() 方法將引發異常:
txt = "Hello, welcome to my world."
print(txt.rfind("q"))
print(txt.rindex("q"))
-1
Traceback (most recent call last):
File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>
print(txt.rindex("q"))
ValueError: substring not found

3、rfind()rindex() 區別

rfind() 和 rindex() 都是查找指定值的最後一次出現。如果找不到該值,則 rfind() 方法將返回 -1,而 rindex() 方法將引發異常

5.3 以 str 開頭/結束 startswith()、endswith()

1、startswith()方法

startswith() 方法用於檢查字符串是否是以指定子字符串開頭,如果是則返回 True,否則返回 False。如果參數 beg 和 end 指定值,則在指定范圍內檢查。

語法

string.startswith(value, start, end)

參數值

參數描述value必需。檢查字符串是否以其開頭的值。start可選。整數,規定從哪個位置開始搜索。end可選。整數,規定結束搜索的位置。

實例

檢查位置 7 到 20 是否以字符 “wel” 開頭:

txt = "Hello, welcome to my world."
x = txt.startswith("wel", 7, 20)
print(x)
True

如果字符串以指定的值開頭,則 startswith() 方法返回 True,否則返回 False。

2、endswith()方法

endswith() 方法用於判斷字符串是否以指定後綴結尾,如果以指定後綴結尾返回 True,否則返回 False。可選參數 “start” 與 “end” 為檢索字符串的開始與結束位置。

語法

string.endswith(value, start, end)

參數值

參數描述value必需。檢查字符串是否以之結尾的值。start可選。整數。規定從哪個位置開始檢索。end可選。整數。規定從哪個位置結束檢索。

實例

  • 檢查字符串是否以短語 “my world.” 結尾:
txt = "Hello, welcome to my world."
x = txt.endswith("my world.")
print(x)
True
  • 檢查位置 5 至 11 是否以短語 “my world.” 結尾:
txt = "Hello, welcome to my world."
x = txt.endswith("my world.", 5, 11)
print(x)
False

如果字符串以指定值結尾,則 endswith() 方法返回 True,否則返回 False。

5.4 編/解碼 encode()、decode()

encode()decode()

encode() 方法以指定的編碼格式編碼字符串,decode() 方法以指定的解碼格式解碼字符串。

errors參數可以指定不同的錯誤處理方案。

語法

string.encode(encoding=encoding, errors=errors)
string.decode(decoding=decoding, errors=errors)

參數值

參數描述encoding / decoding可選。字符串。規定要使用的編碼/解碼。默認是 UTF-8。errors可選。字符串。規定錯誤方法。合法值是:
‘backslashreplace’ - 使用反斜槓代替無法編碼的字符
‘ignore’ - 忽略無法編碼的字符
‘namereplace’ - 用解釋字符的文本替換字符
‘strict’ - 默認值,失敗時引發錯誤
‘replace’ - 用問號替換字符
‘xmlcharrefreplace’ - 用 xml 字符替換字符

實例

str = 'pink老師'
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")
print("UTF-8 編碼:", str_utf8)
print("GBK 編碼:", str_gbk)
print("UTF-8 解碼:", str_utf8.decode('UTF-8', 'strict'))
print("GBK 解碼:", str_gbk.decode('GBK', 'strict'))
UTF-8 編碼: b'pink\xe8\x80\x81\xe5\xb8\x88'
GBK 編碼: b'pink\xc0\xcf\xca\xa6'
UTF-8 解碼: pink老師
GBK 解碼: pink老師

5.5 填充對齊 center()、ljust()、rjust()、zfill()

1、center()方法

center() 方法返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格。

語法

string.center(length, character)

參數值

參數描述length必需。所返回字符串的長度。character可選。填補兩側缺失空間的字符。默認是 " "(空格)。

實例

使用字母 “O” 作為填充字符:

txt = "banana"
x = txt.center(20, "O")
print(x)
OOOOOOObananaOOOOOOO

2、ljust()方法

ljust() 方法返回一個原字符串左對齊,並使用空格填充至指定長度的新字符串。如果指定的長度小於原字符串的長度則返回原字符串。

語法

string.ljust(length, character)

參數值

參數描述length必需。所返回字符串的長度。character可選。用於填充缺少空間(在字符串的右側)的字符。默認值為 " "(空格)。

實例

使用字母 “O” 作為填充字符:

txt = "banana"
x = txt.ljust(20, "O")
print(x)
bananaOOOOOOOOOOOOOO

3、rjust()方法

rjust() 返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串。如果指定的長度小於字符串的長度則返回原字符串。

語法

string.rjust(length, character)

參數值

參數描述length必需。所返回字符串的長度。character可選。用於填充缺失空間(在字符串的左側)字符。默認值為 " "(空格)。

實例

使用字母 “O” 作為填充字符:

txt = "banana"
x = txt.rjust(20, "O")
print(x)
OOOOOOOOOOOOOObanana

4、zfill()方法

zfill() 方法返回指定長度的字符串,原字符串右對齊,前面填充0。

語法

string.zfill(len)

參數值

參數描述len必需。數字,規定要刪除的元素的位置。

實例

用零填充字符串,直到它們長為 10 個字符:

a = "hello"
b = "welcome to my world"
c = "10.000"
print(a.zfill(10))
print(b.zfill(10))
print(c.zfill(10))
00000hello
welcome to my world
000010.000

zfill() 方法在字符串的開頭添加零(0),直到達到指定的長度。如果 len 參數的值小於字符串的長度,則不執行填充。

5.6 刪除左/右指定字符 lstrip()、rstrip()、strip()

1、lstrip()方法

lstrip() 方法用於截掉字符串左邊的空格或指定字符。

語法

string.lstrip(characters)

參數值

參數描述characters可選。一組作為前導字符要刪除的字符。

實例

刪除前導字符:

txt = ",,,,,ssaaww.....banana"
x = txt.lstrip(",.asw")
print(x)
banana

2、rstrip()方法

rstrip() 刪除 string 字符串末尾的指定字符,默認為空白符,包括空格、換行符、回車符、制表符。

語法

string.rstrip(characters)

參數值

參數描述characters可選。一組作為結尾字符要刪除的字符。

實例

刪除結尾字符:

txt = "banana,,,,,ssaaww....."
x = txt.rstrip(",.asw")
print(x)
banan

3、strip()方法

strip() 方法用於移除字符串頭尾指定的字符(默認為空格)或字符序列。

語法

string.strip(characters)

參數值

參數描述characters可選。一組字符,要刪除的前導/尾隨字符的字符。

實例

刪除前導和尾隨字符:

txt = ",,,,,rrttgg.....banana....rrr"
x = txt.strip(",.grt")
print(x)
banana

5.7 判斷字符(串)

5.7.1 空白字符 isspace()

1、isspace()方法

isspace() 方法檢測字符串是否只由空白字符組成。

語法

string.isspace()

參數值

無參數

實例

txt = " s "
x = txt.isspace()
print(x)
False

如果字符串中的所有字符都是空格,則 isspace() 方法將返回 True,否則返回 False。

5.7.2 可打印 isprintable()

2、isprintable()方法

isprintable() 方法檢查文本中的所有字符是否可打印。

語法

string.isprintable()

參數值

無參數

實例

txt = "Hello!\nAre you #1?"
x = txt.isprintable()
print(x)
False

如果所有字符都是可打印的,則 isprintable() 方法返回 True,否則返回 False。不可打印的字符可以是回車和換行符。

5.7.3 標識符 isidentifier()

3、isidentifier()方法

isidentifier() 方法檢查字符串是否是有效標識符。

語法

string.isidentifier()

參數值

無參數

實例

a = "MyFolder"
b = "Demo002"
c = "2bring"
d = "my demo"
print(a.isidentifier())
print(b.isidentifier())
print(c.isidentifier())
print(d.isidentifier()
True
True
False
False

如果字符串是有效標識符,則 isidentifier() 方法返回 True,否則返回 False。

如果字符串僅包含字母數字字母(a-z)和(0-9)或下劃線(_),則該字符串被視為有效標識符。有效的標識符不能以數字開頭或包含任何空格。

5.7.4 字母/數字 isalnum()

4、isalnum()方法

isalnum() 方法檢測字符串是否由字母和數字組成。

語法

string.isalnum()

參數值

無參數

實例

檢查文本中的所有字符是否都是字母數字:

txt = "Company 12"
x = txt.isalnum()
print(x)
False

如果所有字符均為字母數字,即字母(a-z)和數字(0-9),則 isalnum() 方法返回 True。

非字母數字的例子:(space)!#%&? 等等。

5.7.5 字母/中文 isalpha()

5、isalpha()方法

isalpha() 方法檢測字符串是否只由字母或文字組成。

語法

string.isalpha()

參數值

無參數

實例

檢查文本中的所有字符是否都是字母:

txt = "Company10"
x = txt.isalpha()
print(x)
False

如果所有字符都是字母(a-z),則 isalpha() 方法將返回 True。

非字母的字符例子:(space)!#%&? 等等。

5.7.6 數字 isdigit()、isnumeric()、isdecimal()

6.1、isdigit()方法

isdigit() 方法檢測字符串是否只由數字組成。

語法

string.isdigit()

參數值

無參數

實例

檢查文本中的所有字符是否都是字母:

a = "\u0030" # unicode for 0
b = "\u00B2" # unicode for ²
print(a.isdigit())
print(b.isdigit())
True
True

如果所有字符都是數字,則 isdigit() 方法將返回 True,否則返回 False。

指數(例如²)也被視作數字。

6.2、isnumeric()方法

isnumeric() 方法檢測字符串是否只由數字組成,數字可以是: Unicode 數字,全角數字(雙字節),羅馬數字,漢字數字。

指數類似 ² 與分數類似 ½ 也屬於數字。

語法

string.isnumeric()

參數值

無參數

實例

檢查字符是否為數字:

a = "\u0030" # unicode for 0
b = "\u00B2" # unicode for ²
c = "10km2"
print(a.isnumeric())
print(b.isnumeric())
print(c.isnumeric())
True
True
False

如果所有字符均為數字(0-9),則 isumeric() 方法返回 True,否則返回 False。

指數(比如 ² 和 ¾)也被視為數字值。

6.3、isdecimal()方法

isdecimal() 方法檢查 unicode 對象中的所有字符是否都是小數。

語法

string.isdecimal()

參數值

無參數

實例

檢查 unicode 中的所有字符是否都是小數:

a = "\u0030" # unicode for 0
b = "\u0047" # unicode for G
print(a.isdecimal())
print(b.isdecimal())
True
False

如果所有字符均為小數(0-9),則 isdecimal() 方法將返回 True。

此方法用於 unicode 對象。

5.8 格式字符串中指定值 format()、format_map()

1、format()方法

format() 方法格式化指定的值,並將其插入字符串的占位符內,占位符使用大括號 {} 定義。

語法

string.format(value1, value2...)

參數值

參數描述value1, value2…必需。一個或多個應該格式化並插入字符串的值。值可以是數字,用於指定要刪除的元素的位置。
這些值可以是用逗號分隔的值列表、鍵=值列表,或兩者的組合。
這些值可以是任何數據類型。

占位符

可以使用命名索引 {price}、編號索引{0}、甚至空的占位符 {} 來標識占位符。

實例

使用不同的占位符值:

txt1 = "My name is {fname}, I'am {age}".format(fname="Bill", age=64)
txt2 = "My name is {0}, I'am {1}".format("Bill", 64)
txt3 = "My name is {}, I'am {}".format("Bill", 64)
print(txt1)
print(txt2)
print(txt3)
My name is Bill, I'am 64
My name is Bill, I'am 64
My name is Bill, I'am 64

格式化類型

在占位符內,您可以添加格式化類型以格式化結果:

格式化類型描述:<左對齊結果(在可用空間內):>右對齊結果(在可用空間內):^居中對齊結果(在可用空間內):=將標志放置在最左側:+使用加號指示結果是正數還是負數:-負號僅用於負值:使用空格在正數之前插入一個多余的空格(在負數之前使用減號):,使用逗號作為千位分隔符:_使用下劃線作為千位分隔符:b二進制格式:c將值轉換為相應的 unicode 字符:d十進制格式:e科學格式,帶有小寫字母 E:E科學格式,帶有大寫字母 E:f定點數字格式:F定點數字格式,以大寫形式顯示(將 inf 和 nan 顯示為 INF 和 NAN):g通用格式:G通用格式(將大寫 E 用作科學計數法)八進制格式:x十六進制格式,小寫:X十六進制格式,大寫:n數字格式:%百分比格式

2、format_map()方法

format_map() 方法格式化字符串中的指定值。

語法

str.format_map(mapping)

參數值

參數描述mapping字典類型的數據。

實例

str_a = '我是 {name} 老師 {gender} {age} 歲'
dict_1 = {
'name': 'pink', 'gender': '男', 'age': 21}
print(str_a.format_map(dict_1))
我是 pink 老師 男 21 歲

5.9 拆分/截取字符串 split()、rsplit()、splitlines()

1、split()方法

split() 通過指定分隔符從左側對字符串進行切片,如果第二個參數 num 有指定值,則分割為 num+1 個子字符串。

語法

string.split(separator, max)

參數值

參數描述separator可選。規定分割字符串時要使用的分隔符。默認值為空白字符。max可選。規定要執行的拆分數。默認值為 -1,即“所有出現次數”。

實例

  • 使用逗號後跟空格作為分隔符,分割字符串:
txt = "hello, my name is Bill, I am 63 years old"
x = txt.split(", ")
print(x)
['hello', 'my name is Bill', 'I am 63 years old']
  • 使用 # 號字符作為分隔符:
txt = "apple#banana#cherry#orange"
x = txt.split("#")
print(x)
['apple', 'banana', 'cherry', 'orange']
  • 將字符串拆分為最多 2 個項目的列表:
txt = "apple#banana#cherry#orange"
# 將 max 參數設置為 1,將返回包含 2 個元素的列表!
x = txt.split("#", 1)
print(x)
['apple', 'banana#cherry#orange']

split() 方法將字符串拆分為列表。

您可以指定分隔符,默認分隔符是任何空白字符。

**注釋:**若指定 max,列表將包含指定數量加一的元素。

2、rsplit()方法

rsplit() 通過指定分隔符從右側對字符串進行切片,如果第二個參數 num 有指定值,則分割為 num+1 個子字符串。

語法

string.rsplit(separator, max)

參數值

參數描述separator可選。規定分割字符串時要使用的分隔符。默認值為空白。max可選。指定要執行的拆分數。默認值為 -1,即“所有出現次數”。

實例

將字符串拆分為最多 2 個項目的列表:

txt = "apple, banana, cherry"
# 將 max 參數設置為 1,將返回包含 2 個元素的列表!
x = txt.rsplit(", ", 1)
print(x)
['apple, banana', 'cherry']

rsplit() 方法從右側開始將字符串拆分為列表。

如果未指定 “max”,則此方法將返回與 split() 方法相同的結果。

注釋: 若指定 max,列表將包含指定數量加一的元素。

3、splitlines()方法

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

語法

string.splitlines(keeplinebreaks)

參數值

參數描述keeplinebreaks可選。規定是否應包含換行符(True)或不包含(False)。默認值不包含(False)。

實例

拆分字符串,但保留換行符:

txt = "Thank you for your visiting\nWelcome to China"
x = txt.splitlines(True)
print(x)
['Thank you for your visiting\n', 'Welcome to China']

5.10 拆分字符串(返回元組) partition()、rpartition()

1、partition()方法

partition() 方法搜索指定的字符串,並將該字符串拆分為包含三個元素的元組。

第一個元素包含指定字符串之前的部分,第二個元素包含指定的字符串,第三個元素包含字符串後面的部分。

注釋:此方法搜索指定字符串的第一個匹配項。

語法

string.partition(value)

參數值

參數描述value必需。要檢索的字符串。

實例

  • 搜索單詞 “bananas”,並返回包含三個元素的元組:
    • 1 - “匹配”之前的所有內容
    • 2 - “匹配”
    • 3 - “匹配”之後的所有內容
txt = "I could eat bananas all day"
x = txt.partition("bananas")
print(x)
('I could eat ', 'bananas', ' all day')
  • 如果找不到指定的值,則 partition() 方法將返回一個元組,其中包含:1 - 整個字符串,2 - 空字符串,3 - 空字符串:
txt = "I could eat bananas all day"
x = txt.partition("apples")
print(x)
('I could eat bananas all day', '', '')

2、rpartition()方法

rpartition() 方法搜索指定字符串的最後一次出現,並將該字符串拆分為包含三個元素的元組。

第一個元素包含指定字符串之前的部分,第二個元素包含指定的字符串,第三個元素包含字符串之後的部分。

語法

string.rpartition(value)

參數值

參數描述value必需。要檢索的字符串。

實例

  • 搜索單詞 “bananas” 的最後一次出現,並返回包含三個元素的元組:
    • 1 - “匹配”之前的所有內容
    • 2 - “匹配”
    • 3 - “匹配”之後的所有內容
txt = "I could eat bananas all day, bananas are my favorite fruit"
x = txt.rpartition("bananas")
print(x)
('I could eat bananas all day, ', 'bananas', ' are my favorite fruit')
  • 如果找不到指定的值,則 rpartition() 方法將返回一個元組,其中包含:1 - 整個字符串,2 - 一個空字符串,3 - 一個空字符串:
txt = "I could eat bananas all day, bananas are my favorite fruit"
x = txt.rpartition("apples")
print(x)
('', '', 'I could eat bananas all day, bananas are my favorite fruit')

5.11 字符串轉換 maketrans()、translate()

1、maketrans()方法

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

兩個字符串的長度必須相同,為一一對應的關系。

語法

string.maketrans(x[, y[, z]])

參數值

參數描述x必需,字符串中要替代的字符組成的字符串。y可選,相應的映射字符的字符串。z可選,要刪除的字符。

2、translate()方法

translate() 返回被轉換的字符串。

實例

  • 字母 B 替換為 b
txt = "www.Baidu.com"
url = txt.maketrans('B', 'b')
print(txt.translate(url))
www.baidu.com
  • 使用字符串設置要替換的字符,一一對應
x = "aeiou"
y = "12345"
trans = str.maketrans(x, y)
str1 = "this is a string"
print(str1.translate(trans))
th3s 3s 1 str3ng
  • 設置要刪除的字符參數:
txt = "baidu z alibaba Z tencent"
x = "bat"
y = "BAT"
z = "zZ" # 設置刪除的字符
trans = txt.maketrans(x, y, z)
print(txt.translate(trans))
print(trans)
BAidu AliBABA TencenT
{
98: 66, 97: 65, 116: 84, 122: None, 90: None

5.12 元組項目連接到字符串 join()

join()方法

join() 方法用於將序列中的元素以指定的字符連接生成一個新的字符串。

語法

string.join(iterable)

參數值

參數描述iterable必需。所有返回值均為字符串的任何可迭代對象。

實例

  • 使用哈希字符作為分隔符,將元組中的所有項目連接到字符串中:
tuple_1 = ("baidu", "alibaba", "tencent")
x = "#".join(tuple_1)
print(x)
baidu#alibaba#tencent
  • 使用單詞 “TEST” 作為分隔符,將字典中的所有項目連接成一個字符串:
dict_1 = {
"name": "Bill", "country": "USA"}
separator = "TEST"
x = separator.join(dict_1)
print(x)
nameTESTcountry

5.13 字符串替換 replace()

replace()方法

replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數max,則替換不超過 max 次。

語法

string.replace(oldvalue, newvalue, count)

參數值

參數描述oldvalue必需。要檢索的字符串。newvalue必需。替換舊值的字符串。count可選。數字,指定要替換的舊值出現次數。默認為所有的出現。

實例

  • 替換單詞 “bananas”:
txt = "I like bananas"
x = txt.replace("bananas", "apples")
print(x)
I like apples
  • 替換所有出現的單詞 “one”:
txt = "one one was a race horse, two two was one too."
x = txt.replace("one", "three")
print(x)
three three was a race horse, two two was three too.
  • 替換前兩次出現的單詞 “one”:
txt = "one one was a race horse, two two was one too."
x = txt.replace("one", "three", 2)
print(x)
three three was a race horse, two two was one too.

5.14 字符串 Tab 轉換 expandtabs()

expandtabs()方法

expandtabs() 方法把字符串中的 tab 符號 \t 轉為空格,tab 符號 \t 默認的空格數是 8,在第 0、8、16…等處給出制表符位置,如果當前位置到開始位置或上一個制表符位置的字符數不足 8 的倍數則以空格代替。

語法

string.exandtabs(tabsize)

參數值

參數描述tabsize可選。規定制表符大小的數字。默認的 tabsize 是 8。

實例

  • 將制表符大小設置為 2 個空格:
txt = "H\te\tl\tl\to"
x = txt.expandtabs(2)
print(x)
H e l l o
  • 請看看不同制表符大小的結果:
txt = "H\te\tl\tl\to"
print(txt)
print(txt.expandtabs())
print(txt.expandtabs(2))
print(txt.expandtabs(4))
print(txt.expandtabs(10))
H e l l o
H e l l o
H e l l o
H e l l o
H e l l o

6、總結

函數描述print()打印輸出len()確定字符串長度type()返回變量類型str()轉換為字符串max()字符串最大字符min()字符串最小字符del刪除字符串方法描述capitalize()把首字符轉換為大寫casefold()把字符串轉換為小寫(處理其他語言且存在大小寫)lower()把字符串轉換為小寫islower()如果字符串中的所有字符都是小寫,則返回 Trueupper()把字符串轉換為大寫isupper()如果字符串中的所有字符都是大寫,則返回 Truetitle()返回"標題化"字符串:所有單詞都以大寫開始,其余字母均為小寫istitle()如果字符串遵循標題規則,則返回 Trueswapcase()將字符串中大寫轉換為小寫,小寫轉換為大寫count(str, beg, end)返回str出現的次數,beg和end指定范圍find(str, beg, end)搜索指定的值並返回該位置,beg 和 end 指定范圍,不存在返回-1index(str, beg, end)搜索指定的值並返回該位置,beg 和 end 指定范圍,不存在報異常rfind(str, beg, end)類似於 find() ,不過是從右邊開始rindex( str, beg, end)類似於 index(),不過是從右邊開始startswith(str, beg, end)檢查是否以 str 開頭,beg 和 end 指定范圍,如果是,返回 True,否則返回 Falseendswith(str, beg, end)檢查是否以 str 結束,beg 和 end 指定范圍,如果是,返回 True,否則返回 Falseencode(‘UTF-8’, ‘strict’)編碼,出錯默認報 ValueError 異常,除非 errors 指定的是’ignore’或者’replace’decode(‘UTF-8’, ‘strict’)解碼,出錯默認報 ValueError 異常,除非 errors 指定的是’ignore’或者’replace’center(width, fillchar)返回一個指定的寬度width居中的字符串,fillchar為填充的字符,默認為空格ljust(width, fillchar)字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格rjust(width, fillchar)字符串右對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格zfill (width)返回長度為 width 的字符串,原字符串右對齊,前面填充0lstrip()刪除字符串左邊的空格或指定字符rstrip()刪除字符串末尾的空格或指定字符strip()在字符串上執行 lstrip()和 rstrip(),返回字符串的剪裁版本isspace()如果字符串中的所有字符都是空白字符,則返回 Trueisprintable()如果字符串中的所有字符都是可打印的,則返回 Trueisidentifier()如果字符串是標識符,則返回 Trueisalnum()如果字符串至少有一個字符並且所有字符都是字母或數字則返回 True,否則返回 Falseisalpha()如果字符串至少有一個字符並且所有字符都是字母或中文字則返回 True, 否則返回 Falseisdigit()如果字符串只包含數字則返回 True ,否則返回 Falseisnumeric()如果字符串中的所有字符都是數字,則返回 Trueisdecimal()檢查所有字符是否都是十進制數(0~9),是則返回 True, 否則返回 Falseformat()格式化字符串中的指定值format_map()格式化字符串中的指定值(字典)split(str, num)以 str 為分隔符截取,若 num 指定,則截取 num+1 個子字符串,並返回列表(從左)rsplit()以 str 為分隔符截取,若 num 指定,則截取 num+1 個子字符串,並返回列表(從右)splitlines()在換行符處拆分字符串並返回列表partition()返回元組,其中的字符串分為三部分(搜索 str 第一次出現)rpartition()返回元組,其中的字符串分為三部分(搜索 str 最後出現)maketrans(x[, y[, z]])x – 必需,要替代的字符串, y – 可選,相應映射的字符串, z – 可選,要刪除的字符translate()返回被轉換的字符串join()使用字符作為分隔符,將元組中的所有項目連接到字符串中replace(old, new [, max])將字符串中的 old 替換成 new,如果 max 指定,則替換不超過 maxexpandtabs(tabsize)把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8

以上就是本文的全部內容啦!如果對您有幫助,麻煩點贊啦!收藏啦!歡迎各位評論區留言!!!

最後編輯於:2022/7/31 16:27


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved