04-02 基本数据类型之字符串类型及其内置方法
补充:以下我们通过4个方面来讲,作用、定义、类型转换、使用。其中作用我们在基本数据类型中已经提到,不需要再进行赘述了。基本数据类型网址: https://www.cnblogs.com/yang1333/p/12411707.html
一、定义
msg = 'hello' # msg=str('msg')
二、类型转换
- 强调:str可以把任意其它类型都转成字符串类型
res = str({'a': 1})
print(res, type(res))
三、使用:内置方法
👇优先掌握的操作👇
1、按照索引取值(正向取+反向取):只能取
msg = 'hello world'
# 正向取
print(msg[0]) # h
print(msg[5]) # (这里有个空格,注意,空格也是字符)
# 反向取
print(msg[-1]) # d
# 只能取
# msg[0] = 'H' # TypeError: 'str' object does not support item assignment
2、切片:索引的拓展应用,从一个字符串中拷贝出一个子字符串
msg = 'hello world'
# 1、顾头不顾尾
print(msg[0:3]) # hel
print(msg[0:5]) # hello
# 2、步长
print(msg[0:8:2]) # hlow
# 3、反向步长
print(msg[5:0:-1]) # olle
# 4、拷贝字符串
print(msg[:12]) # hello world
print(msg[:len(msg)]) # hello world
print(msg[0:]) # hello world
print(msg[:]) # 推荐使用
# 5、颠倒字符串(解,面试要问)
res = msg[::-1]
print(res) # dlrow olleh
3、长度len
msg = 'hello world'
print(len(msg)) # 13
4、成员运算int和not in
- 判断一个子字符串是否在一个大字符串中
print("alex" in "alex is sb") # True
print("alex" not in "alex is sb") # False
print(not "alex" in "alex is sb") # False(不推荐使用)
5、移除字符串左右两侧的符号strip
# 1、默认去除字符串两边空格
msg = ' egon '
res = msg.strip()
print(msg) # 不会改变原值, egon
print(res) # 是产生了新值,egon
# 2、去除字符串两边*号
msg = '****egon****'
print(msg.strip('*'))
# 注意:strip只取两边,不去中间
msg = '****e*****gon****'
print(msg.strip('*'))
# 3、去除字符串两边*/=-()
msg = '**/*=-**egon**-=()**'
print(msg.strip('*/-=()'))
# 应用:去除用户输入时可能手抖,去除用户输入内容两边的空格
inp_user = input('your name>>: ').strip() # inp_user=" egon"
inp_pwd = input('your password>>: ').strip()
if inp_user == 'egon' and inp_pwd == '123':
print('登录成功')
else:
print('账号密码错误')
6、切分split:把一个字符串按照某种分隔符进行切分,得到一个列表(注意:得到的是一个列表)
- 补充:split切分字符串的顺序是从左边开始切分。
# 1、默认切分的分隔符是空格
info = 'egon 18 male'
res = info.split()
print(res) # ['egon', '18', 'male']
# 2、指定切分的分隔符是:
info = 'egon:18:male'
res = info.split(':')
print(res) # ['egon', '18', 'male']
# 3、指定分隔次数(了解)
info = 'egon:18:male'
res = info.split(':', 1) # 1表示从左边开始,只切分一次:
print(res) # ['egon', '18:male']
7、循环
info = 'egon:18:male'
for x in info:
print(x)
👇需要掌握的操作👇
1、strip,lstrip,rstrip
- strip 是移除字符串左右两侧的符号
- lstrip 是移除字符串左侧的符号
- rstrip 是移除字符串右侧的符号
msg = '***egon****'
print(msg.strip('*')) # egon
print(msg.lstrip('*')) # egon****
print(msg.rstrip('*')) # ***egon
2、lower,upper
- lower 是将字母转化为全小写
- upper 是将字母转化为全大写
msg = 'AbbbCCCC'
print(msg.lower()) # abbbcccc
print(msg.upper()) # ABBBCCCC
3、startswith,endswith
- startswith 是判断是否以给定的字符串开始
- endswith 是判断是否以给定的字符串结束
print("alex is sb".startswith("alex")) # True
print("alex is sb".endswith('sb')) # True
4、format 格式化
移交地址,在如何用户交互中输出之格式化输出:https://www.cnblogs.com/yang1333/p/12421512.html
5、split,rsplit 把字符串切成列表
- split 把字符串按照指定的字符从左开始切成列表
- rsplit 把字符串按照指定的字符从由开始切成列表
- 注意:split与rsplit正真的区分就在于指定切分的次数。
info = "egon:18:male"
print(info.split(':', 1)) # ["egon","18:male"]
print(info.rsplit(':', 1)) # ["egon:18","male"]
6、join 把列表拼接成字符串
- join是按照某个分隔符号,把元素权威字符串的列表拼接成一个大字符串(注意:需要列表元素全为字符串类型)
- 补充:单纯的字符串拼接的效率要远远低于join操作,因为字符串的每次拼接都需要申请一块新的内存空间。
li = ['egon', '18', 'male']
# 1、字符串的拼接操作实现把列表拼接成字符串
res = li[0] + ":" + li[1] + ":" + li[2]
print(res) # egon:18:male
# 2、字符串的join内置方法
res = ":".join(li)
print(res) # egon:18:male
# 如果列表中的所有元素不全是字符串类型,那么join操作将会报错。
li = [1, "2", 'aaa']
# ":".join(li) # TypeError: sequence item 0: expected str instance, int found
7、replace 替换
- 使用方法:第1个参数表示原值。第2个参数指定你的新值。第3个参数指定替换的次数,默认可以不指定。
msg = "you can you up no can no bb"
print(msg.replace("you", "YOU", )) # YOU can you up no can no bb
print(msg.replace("you", "YOU", 1)) # YOU can YOU up no can no bb
8、isdigit 判断字符是否由纯数字组成
- 注意:进行判断的字符串一定要是纯数字类型
print('123'.isdigit()) # True
print('12.3'.isdigit()) # False
👇了解的操作👇
1、find、rfind、index、rindex
- find 指定子字符在大字符串中的从左侧开始的起始位置的索引(推荐使用)
- rfind 指定子字符在大字符串中的从右侧开始的起始位置的索引(推荐使用)
- index 指定子字符在大字符串中的从左侧开始的起始位置的索引
- rindex 指定子字符在大字符串中的从右侧开始的起始位置的索引
- 注意:find、rfind对于找不到的情况,会返回值-1。index、rindex在找不到的情况下会报错。
msg = 'hello egon hahaha'
# 找到返回起始位置的索引(注意:是起始位置)
print(msg.find('e')) # 1
print(msg.find('egon')) # 6
print(msg.rfind('e')) # 6
print(msg.index('e')) # 1
print(msg.rindex('e')) # 6
# 找不到的情况下
print(msg.find('xxx')) # -1
# print(msg.index('xxx')) # ValueError: substring not found
2、count
- count 统计子字符串在大字符串中出现的个数
msg = 'hello egon hahaha'
print(msg.count('h')) # 4
3、center、ljust、rjust、zfill
- center、ljust、rjust使用:第1个参数指定填充总数,字符串中原本字符也会参与个数计算。第2个参数指定填充符号。
- zfill使用:第1个参数指定填充总数,字符串中原本字符也会参与个数计算,默认填充符是0,会在前面补,字符串右对齐。
print('egon'.center(50, '*')) # ***********************egon***********************
print('egon'.ljust(50, '*')) # egon**********************************************
print('egon'.rjust(50, '*')) # **********************************************egon
print('egon'.zfill(10)) # 000000egon
4、expandtabs
- expandtabs 设置制表符默认的空格数,默认4个空格
msg = 'hello\tworld'
# print(msg.expandtabs()) # 默认4个空格
print(msg.expandtabs(2)) # 设置制表符代表的空格数为2
5、capitalize、swapcase、title
- capitalize 首字母大写
- swapcase 大小写互换
- title 每个单词首字母大写
print("hello world egon".capitalize()) # Hello world egon
print("Hello WorLd EGon".swapcase()) # hELLO wORlD egON
print("hello world egon".title()) # Hello World Egon
👇is数字系列👇
1、islower,isupper
- islower 判断字符是否为小写字母
- isupper 是否大写字母
print('abc'.islower()) # True
print('ABC'.isupper()) # True
2、istitle
- istitle 是否只有首字母为大写
print('Hello World'.istitle()) # True
3、isalnum、isalpha
- isalnum 字符测试是否字母和数字
- isalpha 判断字母
print('123123aadsf'.isalnum()) # True
print('ad'.isalpha()) # True
4、isspace
- isspace 若是空格则为真
print(' '.isspace()) # True
5、isidentifier
- isidentifier 判断是否是非法字符(包括内置的关键字,规范变量名的命名规范)
print('age_of_egon'.isidentifier()) # True
print('1age_of_egon'.isidentifier()) # True
6、用isdigit、isnumeric 、isdecimal 区分4种类型的数字
-
isdigit 判断字符是否为数字(只能识别阿拉数字的形式)
-
isnumeric 若是数值则为真(只能识别数值包含4,中文数字,罗马数字)
-
isdecimal 是否为十进制数(只能识别 b'4')
num1 = b'4' # bytes
num2 = u'4' # 注意:unicode,python3中无需加u就是unicode
num3 = '四' # 中文数字
num4 = 'Ⅳ' # 罗马数字
# isdigit只能识别:num1、num2
print(num1.isdigit()) # True
print(num2.isdigit()) # True
print(num3.isdigit()) # False
print(num4.isdigit()) # False
# iisnumeric可以识别:num2、num3、num4
print(num2.isnumeric()) # True
print(num3.isnumeric()) # True
print(num4.isnumeric()) # True
# isdecimal只能识别:num2
print(num2.isdecimal()) # True
print(num3.isdecimal()) # False
print(num4.isdecimal()) # False
总结
- 存几个值
- 存一个值: 字符串、整型、浮点
- 有序、无序:有索引的就是有序
- 有序:字符串
- 无序:整型、浮点型
- 可变、不可变
- 不可变:字符串、整型、浮点型