python 字符串内置函数
1.字符串
字符串类型str
字符串是由单引号’‘,双引号" ",三单双引号’‘’ ‘’',“”" “”",引起来的字符组合。//后面两个可以换行!
任何类型可以被转换为字符串类型。
在字符串中使用单引号或双引号的方式,单引号被双引号包括,双引号被单引号包括…。
2.字符串定义
# 方式一 单引号
str1 = 'new' #字符串内容为中文,乱码如何处理?
# 方式二 双引号
str2 = "gogogo"
# 方式三 三单引号
str3 = ''' GOGOGO
COME!!!'''
# 方式四 三双引号
str4 = """
GOGOGO
COME!!!
"""
print(str1)
print(str2)
print(str3)
print(str4)
3.打印引号
打印引号在外层使用不同的引号来包裹需要打印的引号。
str1 = "I'm, ok'"
str2 = 'A"B"C'
str3 = """ "asd" 'asd' """
str4 = """ ''' x ''' """
print(str1)
print(str2)
print(str3)
print(str4)
"""
I'm, ok'
A"B"C
"asd" 'asd'
''' x '''
"""
4.类型转换
使用str(),将内容括起来。任意类型的数据北欧可以被转为字符串。
print(str(123)) # 整型
print(str(123.4)) # 浮点数
print(str('abc')) # 字符型
print(str([1, 2, 3])) # 列表
print(str(('hello',))) # 元组
print(str({'a': 123, 'b': 456})) # 字典
"""
123
123.4
abc
[1, 2, 3]
('hello',)
{'a': 123, 'b': 456}
"""
5.索引取值
字符串中每个字符占一个索引,可以从左往右正向取值,从右往左反向取值。
格式:字符串[起始值:上限值:步长]
起始值:起始位置。
上限值:上限的位置,只能获取到它的前一位数,不包含它。
步长:默认为正1,可以为负数。
省略索引:
省略第一个索引:相当于使用索引0。
省略第二个索引:相当于使用列表的长度,意味着切片直至列表的末尾。
str1 = 'hello word '
print(str1[0]) # 取单个值。
print(str1[0:11]) # 取全部值。
print(str1[0:30]) # 超出也只能取全部的值。
print(str1[0:]) # 省略第二个索引相当于使用列表的长度,意味着切片直至列表的末尾。
print(str1[:11]) # 省略第一个索引相当于使用索引0。
print(str1[-11:-1]) # 利用索引 负索引-1,的值不会显示,有一个空格不要忘记。
print(str1[0:-1]) # 第一位到倒数第二位,有一个空格不要忘记。
print(str1[-30:-1]) # 超出也只能从0取-1之间的值 等通于 [0:-1]。
print(str1[-1:-12:-1]) # 利用索引 倒退写法,步长是倒退-1。
print(str1[::-1]) # 倒取全部
6.遍历
for循环可以依次获取字符串中的单个字符。
str1 = 'hello word '
# 遍历每个字符
for i in str1:
print(i)
7.长度统计
len() 统计字符串的个数。
str1 = 'hello word '
print(len(str1)) # 11
8.字符串复制与拼接
8.1字符串的复制
- "* "乘号 复制字符串。 ‘a’ * 3 = ‘aaa’
8.2加号拼接
- “+” 加号 连接字符串。 ‘a’ + ‘b’ = ‘ab’
8.3join拼接
.join()方法
格式:
‘连接符’.join(可迭代对象)
适用于列表中的字符串想加。直接连接字符串比较麻烦还需要转为列表,在拼接。
拼接的列表中存在不是字符串的元素会报错。
str1 = 'abc'
str2 = 'def'
list1 = [str1, str2]
print(''.join(list1)) # abcdef
# 列表字符串的拼接
list2 = ['a', 'b', 'c']
print(''.join(list2)) # abc
print('-'.join(list2)) # 设置拼接符 a-b-c
"""
list3 = ['a', 1, 'b', 2, 'c']
print(''.join(list3))
"""
8.4字符截取拼接
str4 = 'Hello word'
print(str1[0:1] + 'a') # 截取字符相加
9.成员运算
str1 = 'hello word'
print('h' in str1) # True
print('a' not in str1) # True
10.格式化输出
.format()方法, Python官方推荐的使用的格式化输入(%s还是很多程序员使用,依据情况使用就好了)
# 方式一
'''
与%s类似,format使用{}占位, {}可以接送任意类型参数,在format()中写上对应的参数。
'''
print('今天星期%s,天气%s,温度%s℃!' % ('一', '晴', 28))
print('今天星期{},天气{},温度{}℃!'.format('一', '晴', 28))
# 方式二
'''
{}中写索引,可以对参数进行多次调用。索引是来源于format()的数据。
(%s 则用多少个坑就需要多少个萝卜来填)
'''
# 方式三
print('现在时间是:{0}点{0}分{0}秒。' \
'距离下班时间还有{1}个小时{1}分{1}秒!'.format(13, 1))
#现在时间是:13点13分13秒。距离下班时间还有1个小时1分1秒!
实验遇到错误点
在此遇到的问题,在续行符后面加了一个空格
SyntaxError: unexpected character after line continuation character
SyntaxError:行连续字符后出现意外字符
11.切分拼接
.split(‘字符’)
指定一个字符为分割点进行切分,指定切割的字符不会保留,不写默认指定为空字符。
指定的字符必须存在字符串中。
split()中用引号引起来,被切分的的字符串会以列表类型存放,指定什么作为分隔 ,该字符不保留。
可以指定切割的次数。
.split(‘指定字符’,maxsplit =) 从左
.rsplit(‘指定字符’,maxsplit =) 从右
‘’.join() 将列表多个字符串元素拼接成字符串。
引号内指定一个拼接符号,引号内默认不写则不使用分隔符。
split 切分, join还原。
partition() 方法用来根据指定的分隔符将字符串进行分割。
如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
#OMP5_STATUS zxic_omp5_osu_bip8_cnt_stop_set(ZXIC_UINT32 dev_id, ZXIC_UINT32 osu_port, ZXIC_UINT32 dir_ab, ZXIC_UINT32 alm, ZXIC_UINT32 en)
reg_save_name = inforlist[i].partition('(')[0].partition(' ')[2] #zxic_omp5_osu_bip8_cnt_stop_set
str1 = 'abc and acg adf'
print(str1.split())
# 指定 | 作为分隔 ,|不保留
str1 = '1 | 2 | 3| 4 | 5'
print(str1.split('|'))#['1 ', ' 2 ', ' 3', ' 4 ', ' 5']
print(str1.split('|', maxsplit=1))#['1 ', ' 2 | 3| 4 | 5'] # 切一次
print(str1.split('|', maxsplit=2))#['1 ', ' 2 ', ' 3| 4 | 5'] # 切两次
print(str1.rsplit('|', maxsplit=1))#['1 | 2 | 3| 4 ', ' 5'] # 从右边切一次
print(str1.rsplit('|', maxsplit=2))#['1 | 2 | 3', ' 4 ', ' 5'] # 从右边切一次
list1 = ['a', '1', 'b', '2']
print(''.join(list1))#a1b2 # 无缝拼接
print('|'.join(list1))#a|1|b|2 # 指定分隔符拼接
12.移除
.strip() 移除指定的首尾字符。
.lstrip() 移除首部,指定的的字符。
.rstrip() 移除尾部,指定的的字符。
不写都默认移除空字符。需要移除的字符用引号引起来,中间的无法移除。
str1 = ' hello word '
print(str1.strip()) # 默认移除首尾空字符 hello word
str2 = '###hello word@@@' # 首尾不能有空格。
print(str2.strip('#')) # 指定移除'#' hello word@@@
print(str2.strip('@')) # 指定移除'@' ###hello word
str3 = '###hello word###'
print(str3.lstrip('#')) # 指定移除首部字符 hello word###
print(str3.rstrip('#')) # 指定移除尾部字符 ###hello word
注意点:aipoo移除'aoa'
***aoa中的字符每个字符去aipoo前后匹配,如果存在则移除***
print('aipoo'.strip('aoa')) # ip
13.字符操作
13.1字母大小写转换
将纯字母转为 大写或者小写 其他的字符原样输出。
.upper() 将字符串中的字母全转为大写
.lower() 将字符串中的字母全转为小写
str1 = 'AbCdEfG'
# 全转大写
print(str1.upper()) # ABCDEFG
# 全转小写
print(str1.lower()) # abcdefg
13.2验证码案例
将输入的字母 与 验证码 全转为大写或小写 在做比较。
code = 'sAD8'
print('验证码>>>>>:%s' % code)
in_code = input('输入验证码>>:')
if in_code.upper() == code.upper():
print('输入正确')
else:
print('输出错误')
"""
验证码>>>>>:sAD8
输入验证码>>:sad8
输入正确
"""
13.3判断 大/小写
判断字符串中的字母是否为全大写或全小写。( 其它字符不会影响判断 )
istitle()如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False.
str2 = 'AbCdEfG'
str3 = 'ABC'
str4 = 'abc'
print(str2.isupper(), str2.isupper()) # False False
# 大 小
print(str3.isupper(), str4.islower()) # True True
print(str2.istitle(), str4.istitle()) # True false
# 其他字符会产生影响
str5 = 'a我'
print(str5.islower()) # True
13.4字符开头/结尾
判断字符串是否以指定的字符开头/结尾,区分大小写。
# 判断字符串是否以指定的字符开头
str6 = 'Hello word!'
print(str6.startswith('h')) # False 区分大小写
print(str6.startswith('H')) # True
print(str6.startswith('Hello')) # True
# 判断字符串是否以指定的字符结尾
print(str6.endswith('!')) # True
14.字符串的替换
.replace方法
格式:
.replace(old, new, count=None)
old 想要被替换的值,参数必须写
new 写入的新值,参数必须写
count 替换的个数,默认全部替换。
str1 = 'aaaa aaaa aaaa'
print(str1.replace('a', 'b'))
print(str1.replace('a', 'b', 4))
15.纯数字/纯字符判断
#函数也比较简单,通过ascii即可判断
# 15.1纯数字判断
.isdigit()判断字符串中是否为纯数字。
str1 = '123456'
str2 = 'a123'
str3 = ' 123'
print(str1.isdigit()) # True
print(str2.isdigit()) # False
print(str3.isdigit()) # False
# 15.2纯字符判断
.isalpha()判断字符串中是否为纯字母。
str1 = 'asd123'
str2 = 'asd'
print(str1.isalpha()) # False
print(str2.isalpha()) # True
# 15.3只有字母和数字
.isalnum() 判断字符串中是只有字母和数字.
print(str1.isalnum()) # True
``
# 16.首字母大写
.title() 将所有单词的首字母大写。
.capitalize() 将第一个单词首字母大写
```python
# 所有单词首字母大写
str1 = 'my name is kid my age is 18'
print(str1.title()) # My Name Is Kid My Age Is 18
# 第一个单词首字母大写
print(str1.capitalize()) # My name is kid my age is 18
17.大小写互换
str2 = 'AbCd'
print(str2.swapcase()) # aBcD
18.获取索引
.find()从左往右查找起始字符所对应的索引,找到就返回索引的值,如果查找的字符不错字则返回-1。
.index()从左往右查找起始字符所对应的索引,找到就返回索引的值,找不到就报错。
print(str1.find('m')) # 0
print(str1.find('my')) # 0
print(str1.find('mys')) # -1
print(str1.index('m'))
print(str1.index('my'))
# print(str1.index('mys')) # 报错 substring not found 未找到子字符串
19.统计字符
.count() 统计某个字符或字符组合出现的次数
print(str1.count('m')) # 3
print(str1.count('my')) # 2
20.文本对齐
.center( 数字, ‘字符’)
.ljust( 数字, ‘字符’)
.rjust( 数字, ‘字符’)
数字为字符宽度,符号位置参数设置填充的符号。
# 字符串居中
message = '输出'
print(message.center(16, '-')) # -------输出-------
print(message.ljust(16, '-')) # 输出--------------
print(message.rjust(16, '-')) # --------------输出
21.练习
"""
name = " kiD"
1. 移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
2. 判断 name 变量对应的值是否以 "ki" 开头,并输出结果
print(name.startswith('ki'))
3. 判断 name 变量对应的值是否以 "d" 结尾,并输出结果
print(name.endswith('d'))
4. 将 name 变量对应的值中的 “i” 替换为 “p”,并输出结果
print(name.replace('i', 'p'))
5. 将 name 变量对应的值根据 “i” 分割,并输出结果。
print(name.split('i'))
6. 将 name 变量对应的值变大写,并输出结果
print(name.upper())
7. 将 name 变量对应的值变小写,并输出结果
print(name.lower())
8. 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
9. 请输出 name 变量对应的值的前 3 个字符?
print(name[:3])
10. 请输出 name 变量对应的值的后 2 个字符?
print(name[2:])
11. 请输出 name 变量对应的值中 “d” 所在索引位置?
print(name.index('i'))
12. 获取子序列,去掉最后一个字符。如: kid 则获取 ki。
print(name[0:len(name)-1])
"""