字符串功能

字符串功能

万能的点

  • str. :在pycharm中输入str.就会显示很多功能

upper()/lower()字母的大小写(得到的结果是str)

  • 变量名.upper() 功能:将变量中字符串的英文字母变大写,但不会改变原变量内容。

    eg:

    value = "alex sb"
    new_value = value.upper()	#这里注意不能只写value.upper(),因为这个功能只能进行赋值,不能改变原有变量中字母的大小写。故将其变大之后的字符串赋值给一个新的变量。
    print(value,new_value)
    
  • 变量名.lower() 功能:将变量中字符串的英文字母变小写

  • eg:

isdigit()判断str是否可以转换成int(得到的结果是bool)

  • 变量名.isdigit() 如果可以转换,会输出True;如果不能转换,会输出False

  • eg:

strip(str)去除头尾(得到的结果是str)

  • strip() 如果括号内不写字符则默认为去除空白“space & tab &enter”,但是字符中间的空白不会去除

  • 可以指定去除头尾两端的内容

  • tab: 制表符 ---> pycharm中用 表示

  • enter: 换行符 ---> pycharm中用 表示

  • space

  • 变量名.strip() 去掉字符串左右两边的空格

  • 变量名.rstrip() 去掉字符串右边的空格

  • 变量名.lstrip() 去掉字符串左边的空格

  • eg:

  • eg:

    name = "
    	   alex    a 
    "
    new = name.strip()
    print(new)	--->	输出结果是"alex   
    "。alex前以及a后的空白全部被消除,但alex与a之间的空白没有被消除,因为内部空白被消除就改变了变量的内容。
    
    指定去除头尾两端的内容:
    name = "al
    ex   	 a"
    new = name.strip("a")	--->	输出结果是"l
    ex   	"		
    因为括号内输入了"a",所以space,tab,enter都没有被消除,只有a被消除了
    
  • 应用场景:

    # 账号:alex 密码:alex123
    # alex   alex123
    # user = input("账号:").strip()
    # pwd = input("密码:").strip()
    # if user == "alex" and pwd == "alex123":
    #     print("ok")
    # else:
    #     print("gun")
    

replace(str,str,int)替换(得到的结果是str)

  • 变量名.replace('xx','yy',数字) 功能:将指定变量中的xx替换为yy。括号内数字为替换的个数,按从左到右的顺序。如果不写个数,则默认全部替换

  • eg:

split(str,int)切割(返回的是列表)

  • 变量名.split('字符',数字) 功能:以括号内的某个字符将变量中的完整字符串切割成部分字符,括号内数字为切割的个数,按从左到右的顺序。如果不写字符,则默认是切割空白(即space,enter,tab);可以没有数字(即不限定切割个数)

  • 变量名.rsplit('字符',数字) 与split的区别在于:加完数字限定切割个数后,切割的顺序相反(从右向左)

  • eg:

  • a = "alex:alex123"
    lst = a.split(":")  # 默认按照空格及换行符,制表符进行分割
    print(lst[0])
    print(lst[1])
    # 这里同字符串的索引,索引是指各个字符在一个字符串里的位置,这里为列表中各个字符串在列表里的位置
    ['alex', 'alex123'] 列表
    
  • name = "alex	meet"
    print(name.split("e"))
    --->	输出结果是['al', 'x	m', '', 't']
    

name[int]索引:(下标)

  • name[xxx] xxx代表第几位

  • eg:

    name = "meet"
    	   #0123(索引值|下标志)   从左向右
    	   #-4-3-2-1		从右向左:这对于优先输出末尾的字符串比较方便.
    print(namep[0])  ---m
    print(namep[-4])  ---m
    
    name = "meet_alex_wusir"
    a = name[5] #a
    b = name[6] #l
    c = name[7] #e
    d = name[8] #x
    print(a+b+c+d)	--->	alex
    

name[-1:3:-1]切片+步长

  • name[起始位置:终止位置+1] 不写终止位置则默认到结尾为止;不写起始位置则默认从头开始

  • name = "meet_alex_wusir"
    a = name[5] #a
    b = name[6] #l
    c = name[7] #e
    d = name[8] #x
    print(a+b+c+d)		or		print(name[5:9])
    注意:[起始位置:终止位置+1]	
    顾头不顾腚,所以腚的位数要+1
    如果不写终止位置,即[起始位置:],则会从起始位置输出至完.
    
    如果要输出wusir:		print(name[-5:]) 这里如果写-5:-1则最后一位不会输出,然而他的最后一位还不能+1,因为0是正数的第一位,-1是反数的第一位。所以只能不写,让他输出至完。
    
    如果要输出e_l:		print(name[2:7:2])  步长:写在最后,不写时默认为一。此时为2,意为一次跨两步,即输出2,4,6。
    
    print(name[-1:3:-1])	--->	输出结果:risuw_xela_	顾头不顾腚,所以没有t。当步长为负数时顺序就变成了从右到左。
    
    因此,补偿可以控制查找方向
    

总结:

  • 索引时,如果超出最大索引值会报错
  • 切片时,如果超出最大切片值不会报错
  • 索引和切片只能给有序数据类型使用

id(str)

  • 字符串--str

    有序:索引

    不可变:内存地址

    # name = "meet"
    # print(id(name))
    # name = name + "最帅了"
    # print(id(name))	--->	两个id是不一致的
    
    # name = "meet"
    # name1 = "meet"
    # print(id(name))		两个id是一致的
    # print(id(name1))  # 小数据池 -- 驻留机制
    

startswith(str)/endswith()开头/结尾(支持切片)

统计count(str/int)(接受切片)

  • name = "meet_alex"
  • print(name.count("e")) --> 3
  • print(name.count("ee")) --> 1

is系列

  • print(name.isalnum()) #判断变量是否是由数字,字母,汉字组成
  • print(name.isalpha()) #判断变量是否是由字母,汉字组成
  • print(name.isdigit()) #判断变量是否是阿拉伯数字 ⑤:这个也是True,是个BUG
  • print(name.isdecimal()) #判断是不是十进制,返回的是布尔值

len(str)字符串长度

  • 方法:
    # a = 123132
    # print(len(a)) #-- str,dict,list...公共方法 (获取长度)
    
    """
    a
    l
    e
    x
    """
    # count = 0
    # while count < len(name):
    #     print(name[count])	--->a
    ,l
    ,e
    ,x
    
    #     count += 1
    
原文地址:https://www.cnblogs.com/Guoxing-Z/p/11494976.html