大小写转换方法
upper()
用于将字符串中的小写字母转为大写字母。
'abcd'.upper() # 'ABCD'
'aBcD'.upper() # 'ABCD'
lower()
用于将字符串中的大写字母转为小写字母。
'ABCD'.lower() # 'abcd'
'aBcD'.lower() # 'abcd'
capitalize()
用于将字符串的第一个字母变成大写,其他字母变小写。首字符如果是非字母则不变,其他字母变小写。
'ABCD'.capitalize() # 'Abcd'
'aBcD'.capitalize() # 'Abcd'
'1abcd'.capitalize() # '1abcd'
'1aBcD'.capitalize() # '1abcd'
title()
用于返回“标题化”的字符串——即所有单词的首字母转为大写,其余字母均为小写。
注意:非字母后的第一个字母将转为大写字母。
'this is an example string'.title() # This Is An Example String
'5g is coming'.title() # 5G Is Coming
swapcase()
用于对字符串的大小写字母进行互相转换。
'abcd'.swapcase() # 'ABCD'
'aBcD'.swapcase() # 'AbCd'
我们来总结一下:
分割、组合与移除方法
split()_分割
用于通过指定分隔符对字符串进行分割。split()
方法有两个可选参数,第一个参数为分隔符,默认为所有的空字符,包括空格、换行(\n
)、制表符(\t
)等。第二个参数为最大分割次数,默认为 -1
,即不限次数。
'小 贝 编 程'.split() # ['小', '贝', '编', '程']
'小 贝 编 程'.split(' ') # ['小', '贝', '编', '程']
'小-贝-编-程'.split('-') # ['小', '贝', '编', '程']
'小贝编程'.split('贝编') # ['小', '程']
'小 贝 编 程'.split(' ', 1) # ['小', '贝 编 程']
join()_组合
用于将序列中的元素以指定的字符连接生成一个新的字符串。join()
方法接收一个序列(列表、元组、字符串等)作为参数,.
前面的字符串用于连接符。
# 列表
''.join(['小', '贝', '编', '程']) # 小贝编程
'-'.join(['小', '贝', '编', '程']) # 小-贝-编-程
# 元组
'-'.join(('小', '贝', '编', '程')) # 小-贝-编-程
# 字符串
'-'.join('小贝编程') # 小-贝-编-程
strip()_移除
用于移除字符串开头和结尾指定的字符(默认为空字符)或字符序列。当传入一个字符串时,会将传入字符串中每个字符依次移除。
' 小贝编程 '.strip() # '小贝编程'
'~~小贝编程~~'.strip('~') # '小贝编程'
'~~小贝~~编程~~'.strip('~') # '小贝~~编程'
'_~_小贝编程_~~'.strip('~_') # '小贝编程'
我们来总结一下:
编程练习
请你使用 split()
、join()
和 strip()
方法将 $带-你-打-开-编-程-世-界-的-大-门$ 变成 带~你~打~开~编~程~世~界~的~大~门。
str = '$带-你-打-开-编-程-世-界-的-大-门$'
str = str.strip('$')
str = str.split('-')
str = '~'.join(str)
print(str)
# 简化为
# 先分割、再组合、再转换
# str = '~'.join(str.split('-')).strip('$')
# print(str)
定位与替换方法
count()
用于统计字符串中某个字符串出现的次数。第一个参数为要统计次数的字符串,后两个可选参数为在字符串搜索的开始与结束索引。
'aabbcccd'.count('a') # 2
'aabbcccd'.count('ab') # 1
'aabbcccd'.count('e') # 0
'aabbcccd'.count('a', 2, 6) # 0
# 等同于 'bbcc'.count('a')
'aabbcccd'.count('c', 2, 6) # 2
# 等同于 'bbcc'.count('c')
find()
用于检测字符串中是否包含子字符串,如果包含子字符串返回第一次出现的索引值,否则返回 -1。第一个参数为要查找的子字符串,后两个可选参数为在字符串搜索的开始与结束索引。
'abc'.find('b') # 1
'abcabc'.find('b') # 1
'abcabc'.find('d') # -1
'abcbcdabc'.find('bcd') # 3
'abcabc'.find('b', 1, 2) # 1
'abcabc'.find('b', 2, 3) # -1
replace()
用于将字符串中的指定字符串替换成别的字符串。第一个参数为被替换字符串,第二个参数为替换字符串,第三个可选参数为替换的最多次数,默认为无限次。
'abcd'.replace('b', 'e') # 'aecd'
'abbbcbd'.replace('b', 'e') # 'aeeeced'
'abbbcbd'.replace('bb', 'e') # 'aebcbd'
'abbbcbd'.replace('b', 'e', 2) # 'aeebcbd'
编程练习
请按要求对字符串进行相应的操作。
str = 'feel the change'
# 输出 str 中 e 的个数
print(str)
# 输出 str 中 change 的索引值
print(str)
# 将 str 中的 change 替换为 CHANGE
print(str)
转换后为:
str = 'feel the change'
# 输出 str 中 e 的个数
print(str.count('e'))
# 输出 str 中 change 的索引值
print(str.find('change'))
# 将 str 中的 change 替换为 CHANGE
print(str.replace('change','CHANGE'))
格式化输出方法
除了之前说的使用 %
运算符进行字符串格式化输出,我们还可以使用字符串的 format()
方法达到同样的效果。
'我叫{},今年 {} 岁,来自{}'.format('小贝', 18, '南京')
# 我叫小贝,今年 18 岁,来自南京
从上面的例子可以看到,format()
方法使用 {}
作为占位符,然后按照参数顺序替换对应的占位符。
我们还可以给占位符编号:
'我叫{0},今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')
# 我叫小贝,今年 18 岁,来自南京
# 调整编号顺序
'我叫{2},今年 {1} 岁,来自{0}'.format('南京', 18, '小贝')
# 我叫小贝,今年 18 岁,来自南京
# 重复编号
'我叫{0},{0}今年 {1} 岁,来自{2}'.format('小贝', 18, '南京')
# 我叫小贝,小贝今年 18 岁,来自南京
我们还可以给占位符命名:
'我叫{name},今年 {age} 岁,来自{city}'.format(name = '小贝', age = 18, city = '南京')
# 我叫小贝,今年 18 岁,来自南京
# 命名后参数顺序不再重要
'我叫{name},今年 {age} 岁,来自{city}'.format(age = 18, city = '南京', name = '小贝')
# 我叫小贝,今年 18 岁,来自南京
请你用字符串的 format()
方法改写之前天气播报的代码。
weathers = [
('南京', 36),
('成都', 30),
('昆明', 26)
]
for w in weathers:
print('今天%s的最高气温是%d度' % (w[0], w[1]))
改写后的结果为:
weathers = [
('南京', 36),
('成都', 30),
('昆明', 26)
]
for w in weathers:
print('今天{}的最高气温是{}度'.format(w[0],w[1]))
# 输出为:
# 今天南京的最高气温是36度
# 今天成都的最高气温是30度
# 今天昆明的最高气温是26度