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

总结

  • 存几个值
    • 存一个值: 字符串、整型、浮点
  • 有序、无序:有索引的就是有序
    • 有序:字符串
    • 无序:整型、浮点型
  • 可变、不可变
    • 不可变:字符串、整型、浮点型
posted @ 2020-03-10 22:12  给你加马桶唱疏通  阅读(209)  评论(0编辑  收藏  举报