文字与字串 ( 常用方法 )
在“文字与字串”文章中已经认识了字串 String 的基本用法,这篇教学会整理出文字与字串相关的语法。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
常用操作方法
下面整理了文字与字串常用的操作方法 ( 参考:字符串的方法 )
| 方法 | 说明 |
|---|---|
| str(x) | 转换与建立字串 |
| + | 结合字串 |
| * | 重复字串 |
| str[] | 取出字元 |
| len(str) | 取得字串长度 |
| str.split(x) | 根据 x 拆分字串 |
| str.join(iter) | 将序列结合成字串 |
| str.replace(x, y, n) | 将字串中的 x 替换为 y,n 为要替换的数量,可不填 ( 表示全部替换 ) |
| str.strip() | 去除字串开头或结尾的某些字元 |
| str.capitalize() | 将字串字首变成大写 |
| str.casefold()、str.lower() | 将字串全部转成小写 |
| str.upper() | 将字串全部转成大写 |
| str.title() | 将字串全部转成标题 ( 每个单字字首大写 ) |
| str.swapcase() | 将字串的大小写对调 |
| str.count(sub, start, end) | 计算某段文字在字串中出现的次数 ( start、end 为范围,可不填 ) |
| str.index(sub, start, end) | 寻找某段文字在字串中出现的位置 ( start、end 为范围,可不填 ) |
| str.format | 格式化字串,参考“.format” |
| str.encode(encoding='utf-8', errors='strict') | 字串编码 |
常用判断方法
下面整理了文字与字串常用的判断方法,这些方法使用后会回传 True 和 False。
| 方法 | 说明 |
|---|---|
| sub in str | 判断字串中是否出存在某段文字,回传 True 或 False |
| str.isalnum() | 判断字串中是否都是英文字母或数字 ( 不能包含空白或符号 ),回传 True 或 False |
| str.isalpha() | 判断字串中是否都是英文字母 ( 不能包含数字、空白或符号 ),回传 True 或 False |
| str.isdigit() | 判断字串中是否都是数字 ( 不能包含英文、空白或符号 ),回传 True 或 False |
| str.islower() | 判断字串中是否都是小写英文字母,回传 True 或 False |
| str.isupper() | 判断字串中是否都是大写英文字母,回传 True 或 False |
| str.istitle() | 判断字串中是否为标题 ( 每个单字字首大写 ),回传 True 或 False |
str(x)
使用“str(x)”可以将 x 转换成字串的型态。
a = str(123)
print(a) # 123 ( 字串型態,不是數字 )
+ 结合字串
使用“+”可以将不同的字串结合在一起。
a = 'abc'
b = '123'
print(a + b) # abc123
* 重复字串
使用“*”可以将同一个字串重复指定的次数。
a = 'abc'
print(a*3)
str[]
使用“str[]”可以取出字串中的某些字元 ( 更多可参考:取得字元与字串 )。
a = '0123456789abcdef'
print(a[0]) # 0 ( 第一個字元 )
print(a[3]) # 3 ( 第四個字元 )
print(a[-1]) # f ( 最後一個字元 )
print(a[:]) # 0123456789abcdef ( 取出全部字元 )
print(a[5:]) # 56789abcdef ( 從 5 開始到結束 )
print(a[:5]) # 01234 ( 從 0 開始到第 4 個 ( 5-1 ) )
print(a[5:10]) # 56789 ( 從 5 開始到第 9 個 ( 10-1 ) )
print(a[5:-3]) # 56789abc ( 從 5 開始到倒數第 4 個 ( -3-1 ) )
print(a[5:10:2]) # 579 ( 從 5 開始到第 9 個,中間略過 2 個 )
len(str)
使用“len(str)”可以取得字串长度 ( 有几个字元 )。
a = 'hello world'
print(len(a)) # 11
str.split(x)
使用“str.split(x)”可以根据 x 字元拆分字串,使字串变成串列形式。
a = 'hello world, I am oxxo, how are you?'
b = a.split(',') # 以逗號「,」進行拆分
c = a.split(' ') # 以空白字元「 」進行拆分
d = a.split() # 如果不指定分隔符號,自動以空白字元進行拆分
print(b) # ['hello world', ' I am oxxo', ' how are you?']
print(c) # ['hello', 'world,', 'I', 'am', 'oxxo,', 'how', 'are', 'you?']
print(d) # ['hello', 'world,', 'I', 'am', 'oxxo,', 'how', 'are', 'you?']
str.join(iter)
使用“str.join(iter)”可以将原本的字串,结合指定的序列,变成新的字串。
a = ['hello world', 'I am oxxo', 'how are you?']
b = ', '.join(a) # 使用逗號「,」進行結合
print(b) # hello world, I am oxxo, how are you?
str.replace(x, y, n)
使用“str.replace(x, y, n)”可以将字串中的 x 替换为 y,n 为要替换的数量,可不填 ( 表示全部替换 )
a = 'hello world, lol'
b = a.replace('l','XXX')
c = a.replace('l','XXX',2)
print(b) # heXXXXXXo worXXXd, XXXoXXX ( 所有的 l 都被換成 XXX )
print(c) # heXXXXXXo world, lol ( 前兩個 l 被換成 XXX )
str.strip()
使用“str.strip()”可以去除字串开头或结尾的某些字元。
a = ' hello!!'
b = a.strip()
c = a.strip('!')
d = a.lstrip()
e = a.rstrip()
print(b) # hello!!
print(c) # hello
print(d) # hello!! 使用 lstrip() 函式可以只去除左邊
print(e) # hello!! 使用 rstrip() 函式可以只去除右邊
下面的例子,会去除开头与结尾指定的字元
s = '@!$##$#ABCDE%#$#%#$'
a = s.strip('!@#$%^&*(')
print(a) # ABCDE
str.capitalize()
使用“str.capitalize()”将字串的字首变成大写。
a = 'hello world, i am oxxo!'
b = a.capitalize()
print(b) # Hello world, i am oxxo!
str.casefold()、str.lower()
使用“str.casefold()”和“str.lower()”可以将字串全部转成小写,str.casefold() 更会将一些其他语系的小写字母作转换。
a = 'Hello World, I am OXXO!'
b = a.casefold()
c = a.lower()
print(b) # hello world, i am oxxo!
print(c) # hello world, i am oxxo!
str.upper()
使用“str.upper()”可以将字串全部转成大写。
a = 'Hello World, I am OXXO!'
b = a.upper()
print(b) # HELLO WORLD, I AM OXXO!
str.title()
使用“str.title()”可以将字串全部转成标题 ( 每个单字字首大写 )
a = 'Hello world, I am OXXO! How are you?'
b = a.title()
print(b) # Hello World, I Am Oxxo! How Are You?
str.swapcase()
使用“str.swapcase()”可以将字串的大小写对调。
a = 'Hello world, I am OXXO!'
b = a.swapcase()
print(b) # hELLO WORLD, i AM oxxo!
str.count(sub, start, end)
使用“str.count(sub, start, end)”可以计算某段文字在字串中出现的次数 ( start、end 为范围,可不填 )。
a = 'Hello world, I am OXXO!'
b = a.count('o')
c = a.count('o', 1, 5)
print(b) # 2
print(c) # 1
str.index(sub, start, end)
使用“str.index(sub, start, end)”可以寻找某段文字在字串中出现的位置 ( start、end 为范围,可不填 )。
a = 'Hello world, I am OXXO!'
b = a.index('w')
print(b) # 6
str.encode(encoding='utf-8', errors='strict')
使用*“str.encode(encoding='utf-8', errors='strict')可以针对字串进行编码。
a = 'Hello world, 喔哈!'
b = a.encode(encoding='utf-8', errors='strict')
c = a.encode(encoding='BIG5', errors='strict')
print(b) # b'Hello world, \xe5\x96\x94\xe5\x93\x88\xef\xbc\x81'
print(c) # b'Hello world, \xb3\xe1\xab\xa2\xa1I'
sub in str
使用“sub in str”可以判断字串中是否存在某段文字,回传 True 或 False ( 也可使用 not in 判断是否不存在 )。
a = 'Hello world!'
print('wo' in a) # True
print('ok' not in a) # True
str.isalnum()
使用“str.isalnum()”可以判断字串中是否都是英文字母或数字 ( 不能包含空白或符号 ),回传 True 或 False。
a = 'Helloworld123'
b = 'Helloworld123!!'
c = 'Hello world'
print(a.isalnum()) # True
print(b.isalnum()) # False ( 包含驚嘆號 )
print(c.isalnum()) # False ( 包含空白 )
str.isalpha()
使用“str.isalpha()”可以判断字串中是否都是英文字母 ( 不能包含数字、空白或符号 ),回传 True 或 False。
a = 'Helloworld'
b = 'Helloworld123'
c = 'Hello world'
print(a.isalpha()) # True
print(b.isalpha()) # False ( 包含數字 )
print(c.isalpha()) # Fasle ( 包含空白 )
str.isdigit()
使用“str.isdigit()”可以判断字串中是否都是数字 ( 不能包含英文、空白或符号 ),回传 True 或 False。
a = '12345'
b = 'Hello123'
c = '1 2 3'
print(a.isdigit()) # True
print(b.isdigit()) # False ( 包含英文 )
print(c.isdigit()) # Fasle ( 包含空白 )
str.islower()
使用“str.islower()”可以判断字串中是否都是小写英文字母 ( 忽略数字和符号 ),回传 True 或 False。
a = 'hello world 123'
b = 'Hello World 123'
print(a.islower()) # True
print(b.islower()) # False ( H 和 W 是大寫 )
str.isupper()
使用“str.isupper()”可以判断字串中是否都是大写英文字母 ( 忽略数字和符号 ),回传 True 或 False。
a = 'HELLO 123'
b = 'Hello 123'
print(a.isupper()) # True
print(b.isupper()) # False
str.istitle()
使用“str.istitle()”可以判断字串中是否为标题 ( 每个单字字首大写 ),回传 True 或 False。
a = 'Hello World I Am Oxxo 123!!'
b = 'Hello World I Am OXXO 123!!'
c = 'Hello world, I am OXXO 123!!'
print(a.istitle()) # True
print(b.istitle()) # False ( OXXO 全都大寫 )
print(c.istitle()) # False ( world 和 am 字首沒有大寫 )
微信扫码关注
抖音扫码关注