python:string模塊的部分函數介紹

string模塊包含的是一些處理字符串的函數。

1 大小寫轉換

分爲三種類型的大小寫轉換,如下:

1.1 全部大小寫轉換:upper()與lower()

這兩個函數分別將字符串變爲大小寫,下面爲示例代碼:

import string

s = 'abc'
S = 'ABC'
print(s.upper())
print(S.lower())

結果輸出:

ABC
abc

1.2 將字符串首部變更大小寫:title()與capitalize()

title()將字符串中所有單詞的首字母大寫,其他位置的字符全部小寫。
capitalize()將字符串的首字母(第一個單詞的第一個字母)大寫,其餘全部小寫。

下面爲示例代碼:

import string

str1 = 'aaBB AAbb'
print(str1.title())
print(str1.capitalize())

輸出結果爲:

'Aabb Aabb'
'Aabb aabb'

1.3 大小寫反轉:swapcase()

swapcase()將字符串的小寫改爲大寫,大寫則改爲小寫。示例代碼如下:

import string

str2 = 'Hello World!'
print(str2.swapcase())

輸出結果爲:

hELLO wORLD!

2 is判斷函數

這一類函數根據對字符串的判斷,返回True或者False。

isdecimal():檢查字符串是否只包含十進制字符
isalpha():檢查字符串是否全爲字母
isdigit():檢查字符串是否全爲數字
isalnum():檢查字符串是否只含數字和字母
isupper():檢查字符串是否全爲大寫
islower():檢查字符串是否全爲小寫
istitle():檢查字符串中的全部單詞是否爲首字母大寫,而其他字母是小寫
isspace():檢查字符串是否爲空白符(空格、換行、製表符)
isprintable():檢查字符串是否爲可打印字符(空白符的話只有空格是可打印了,換行‘\n’與製表符’\t’不可以)
isidentifier():檢查字符串是否符合命名規則(只含字母、數字和下劃線,且只能以字母或下劃線開頭)

示例代碼如下:

import string

print('1.234'.isdecimal()) # 包含的不是十進制字符,返回False
print('abc123'.isalpha()) # 不全是字母,返回False
print('123'.isdigit()) # 全是數字,返回True
print('1a2b'.isalnum()) # 只包含字母與數字,返回True
print('ABc'.isupper()) # 並不全是大寫字母,返回Fasle
print('abc'.islower()) # 全爲小寫字母,返回True
print('Abb Cdd Eff'.istitle())  # 字符串的三個單詞均爲首字母大寫,其他小寫,返回True
print(' \n\t'.isspace()) # 均爲空白符(空格、換行、製表符),返回True
print('hello world\n'.isprintable()) # 包含'\n',爲非打印字符,返回False
print('abc_123'.isidentifier()) # 符合命名規則,返回True

輸出結果爲:

False
False
True
True
False
True
True
True
False
True

3 字符串填充

填充,是將一定長度的字符串,用給定的字符擴充至一定長度。有兩個注意點:
1、擴充的長短——width,當字符串比width小時纔會擴充;當字符串的長度大於width,則返回字符串本身。
2、擴充的位置,有三類:源字符串居左、居右和居中

居中:center(width[, fillchar]),源字符串位於中間,擴充字符在兩邊
居左:ljust(width[, fillchar]),源字符串位於左邊,擴充字符在字符串的右邊
居右:rjust(width[, fillchar]),源字符串位於右邊,擴充字符在字符串的左邊

注意,填充字符fillchar是可選的,默認爲空格,可更改爲任意字符。示例代碼如下:

import string

str1 = 'bilibili'
print(str1.center(10, '*'))
print(str1.ljust(10, '*'))
print(str1.rjust(10, '*'))

輸出結果爲:

*bilibili*
bilibili**
**bilibili

還有一個填充函數,zfill()函數,該函數只有一個參數width,即只能指定輸出字符串的寬度。填充字符固定爲‘0’,源字符串在右邊。另一方面,此函數可識別字符串的正負(+,-),這種情況下,正負號仍爲第一個字符,填充’0’直到源字符串的長度達到width-1(因爲正負號寬度爲1,這樣正負號與現在的字符串總長爲width)。示例代碼如下:

import string

print('12345'.zfill(10))
print('-12345'.zfill(10))
print('+a2345'.zfill(10))
print('#12345'.zfill(10))

輸出結果爲:

0000012345
-000012345
+0000a2345
0000#12345

4 子字符串搜索

4.1 子字符串位置搜索

語法:

count(sub[, start[, end]])

功能是搜索字符串中是否含有指定子字符串sub,若有則返回出現次數。start與end代表字符串的搜索位置(從指定字符串的start到end的位置搜索子字符串)。參數sub爲必選參數,start與end的爲可選參數。若未指定start與end,則代表對全字符串搜索。示例代碼如下:

import string

print('ababcabcd'.count('ab'))
print('ababcabcd'.count('ab', 2))
print('ababcabcd'.count('ab', 2, 4))

輸出結果爲:

3
2
1

4.2 字符串開始與結尾判斷

語法:

startswith(prefix[, start[, end]])
endswith(suffix[, start[, end]])

這兩個函數分別判斷字符串的開始或者末尾的字符串爲指定字符串,可以限定從字符串的哪個位置到哪個位置爲搜索範圍(start到end),若爲指定start和end,則對整個字符串進行搜索判斷。兩個函數均屬於判斷函數,返回值爲True和False。

注意:prefix與suffix可以爲子字符串,也可爲元組。若爲元組,則只要元組內的元素有一個符合條件,即爲True。

示例代碼如下:

import string

print('abc123'.startswith('abc'))
print('abc123'.endswith('123'))
print('abc123'.startswith('ab', 0, 2))
print('hello world'.startswith(('he','wo')))

輸出結果爲:

True
True
True
True

4.3 字符串位置鎖定find與index函數

find(sub[, start[, end]]):返回第一個子字符串的位置信息,若不存在則返回-1
rfind(sub[, start[, end]]):返回最右的第一個子字符串的位置信息,若不存在則返回-1
index(sub[, start[, end]]):返回第一個子字符串的位置信息,若不存在則報錯
rindex(sub[, start[, end]]):返回最右的第一個子字符串的位置信息,若不存在則報錯

這些函數均可以指定開始與結束的邊界。示例代碼如下:

import string

s = 'abc123ABC123abc'
print(s.find('123'))
print(s.rfind('abc'))
print(s.index('abc'))
print(s.rindex('abc'))

輸出結果爲:

3
12
0
12

注意:以上四個實例函數中,均在指定字符串中找到對應子字符串。在其他情況下,若未找到子字符串,對於find,返回-1;對於index,則會報錯。

5 字符串替換

語法:

replace(old, new[, count])

函數功能是,將搜索到的舊字符串old替換爲新字符串new。count爲可選參數,意義爲更改個數。示例代碼如下:

import string

s = '12ab12cd'
print(s.replace('ab', 'cd'))
print(s.replace('12', '34'))
print(s.replace('12', '34', 1))
print(s.replace('56', '78')) # 如果第一個參數old(這裏爲'56')不存在於源字符串s中,則返回源字符串s,這是因爲無法替換,只好返回源字符串s

輸出結果爲:

12cd12cd
34ab34cd
34ab12cd
12ab12cd

6 字符串分割

常用函數爲partition()與rpartition()。

partition(sep)對給定字符串,將其分割爲三部分(只有一個參數——sep,且必須指定sep的值)。首先搜索到子字符串sep,將sep之前的部分作爲第一部分,sep本身作爲第二部分,sep之後的部分作爲第三部分。

前面提到的兩個函數十分相似,但是當源字符串中不包含sep子字符串時,有一點細微差別:
1、partition()會把字符串分爲:源字符串、空白、空白;
2、rpartition()會把字符串分爲:空白,空白,源字符串。

示例代碼:

import string

s = '12ab34cd56'
print(s.partition('34'))
print(s.rpartition('34'))
print(s.partition('78')) # 源字符串中沒有'78',將字符串分爲源字符串、空白、空白
print(s.rpartition('78')) # 源字符串中沒有'78',將字符串分爲空白、空白、源字符串

輸出結果爲:

('12ab', '34', 'cd56')
('12ab', '34', 'cd56')
('12ab34cd56', '', '')
('', '', '12ab34cd56')

另外兩種字符串分割函數,語法如下:

split(sep=None, maxsplit=-1)
rsplit(sep=None, maxsplit=-1)

參數sep與maxsplit均爲可選參數。前者指明分割字符串時的分隔符(默認爲所有的空字符,包括空格、換行\n、製表符\t);後者指明分割次數,默認值爲-1(-1代表分割所有)。而split是從左到右切割,rsplit是從右往左切割。

實例代碼如下:

import string

s = 'ab,cd,ef,gh'
print(s.split(',', 2))
print(s.rsplit(',', 2))

結果輸出爲:

['ab', 'cd', 'ef,gh']
['ab,cd', 'ef', 'gh']

7 連接字符串

c.join(iterable)將可迭代對象iterable的元素用字符c連接起來。可迭代對象包括字符串、列表、元組、字典、集合。而且可迭代對象的元素必須是字符串類型,不能包含數字或者其他類型的元素。

下面爲示例代碼:

import string

str1 = 'csdn'
list1 = ['c', 's', 'd', 'n']
tuple1 = ('c', 's', 'd', 'n')
dict1 = {'1': 'c', '2': 's', '3': 'd', '4': 'n'}
set1 = {'c', 's', 'd', 'n'}
print('~'.join(str1))
print('-'.join(list1))
print('+'.join(tuple1))
print('*'.join(dict1))  # 只對鍵進行字符串連接,忽略值。
print('^'.join(set1))

輸出結果爲:

c~s~d~n
c-s-d-n
c+s+d+n
1*2*3*4
c^s^n^d

類似於:list2 = [1, 2, 3, 4]或者list3 = ['1', '2', ['3', '4']]。若選擇這兩個可迭代對象作爲參數,則會報錯。因爲規定了參與迭代的元素必須是字符串類型,不能包含數字或者其他類型。

8 字符串修剪

分三種類型:

8.1 strip()

語法:str.strip([chars]),chars爲指定的字符序列,返回值爲移除字符串頭尾指定的字符後,生成的新字符串。

作用:用於移除字符串頭尾指定的字符(默認爲空格或者換行符)或字符序列。

注意:只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。

示例代碼如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.strip()) # 刪除開頭與結尾的空格
print(str2.strip('0')) # 刪除開頭與結尾的0
print(str3.strip('12a')) # 只要首尾包含有指定字符序列(這裏是'12a')的字符(這裏是'1','2','a'),就刪除該字符

輸出結果爲:

123 456
123
343

8.2 rstrip()

語法:str.rstrip([chars])

作用是刪除字符串str末尾的指定字符chars(默認爲空格)。返回值爲,刪除str字符串末尾的指定字符後生成的新字符串。

示例代碼如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.rstrip()) # 刪除結尾的空格
print(str2.rstrip('0')) # 刪除結尾的0
print(str3.rstrip('12a')) # 只要尾部包含有指定字符序列(這裏是'12a')的字符(這裏是'1','2','a'),就刪除該字符

輸出結果爲:

   123 456
00123
a12343

8.3 lstrip()

語法:str.lstrip([chars])

作用是刪除字符串str左邊的指定字符chars(默認爲空格)。返回值爲,刪除str字符串左邊的指定字符後生成的新字符串。
示例代碼如下:

import string

str1 = '   123 456   '
str2 = '0012300'
str3 = 'a1234321a'
print(str1.lstrip()) # 刪除開頭的空格
print(str2.lstrip('0')) # 刪除開頭的0
print(str3.lstrip('12a')) # 只要字符串首部包含有指定字符序列(這裏是'12a')的字符(這裏是'1','2','a'),就刪除該字符

結果輸出爲:

123 456   
12300
34321a
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章