Python 基础 - Str

Str

字符串是不可变的对象,任何操作对象对原字符串都是没有影响的

索引和切片

  • 索引(下标),从零开始

    s = "python"
    print(s[0])		# p
    print(s[3])		# h
    print(s[-1])	# n
    print(s[-3])	# h
    
  • 切片

    • 截取字符串中的部分内容

    • 基本语法:

      str[start : end]
      str[start : end : step] # step(步长)为正数的从左往右取值,为负数则从右往左取值
      
    • 规则:顾头不顾尾,从 start(起始位置)开始截取,截取到 end(结束位置)的位置,但不包括 end

    s = "python全栈开发"
    
    print(s[0:3])       # pyt
    print(s[6:8])       # 全栈
    
    print(s[:])         # python全栈开发
    print(s[0:])        # python全栈开发
    print(s[6:])        # 全栈开发
    
    print(s[-5:-2])     # n全栈
    print(s[-5:])       # n全栈开发
    print(s[:-2])       # python全栈
    
    print(s[0:3:2])     # pt
    print(s[:8:3])      # ph全
    
    print(s[3::2])      # hn栈发
    print(s[-6::3])     # o栈
    print(s[-5::-2])    # nhy
    
    print(s[-1:-5:-2])  # 发栈
    

大小写

  • capitalize() 第一个字母(首字母)变大写

    s = "abcdef"
    s1 = s.capitalize()
    print(s1)   #Abcdef
    
  • lower() 全部变小写

    s = "ABCDEF"
    ret = s.lower()
    print(ret)  #abcdef
    
  • casefold() 与lower()的区别:lower() 对某些字符支持不够好

    s = "ABCDEF"
    ret = s.casefold()
    print(ret)  # abcdef
    
  • upper() 全部变大写

    s = "abcdef"
    ret = s.upper()
    print(ret)  # ABCDEF
    
  • swapcase() 大小写互换

    s = "aBcDeF"
    ret = s.swapcase()
    print(ret)  # AbCdEf
    
  • title(),字符串中有特殊字符的,首字母大写

    s = "ab ad我fd*af"
    s1 = s.title()
    print(s1)   # Ab Ad我Fd*Af
    # 中文,空格都算是特殊字符
    

高阶切片

  • center() 补全

    s = "abcdef"
    s1 = s.center(10,'*')
    print(s1)   # **abcdef**
    # 把字符串拉长成10,把原字符串放中间,其余位置补*
    
  • strip() 去除

    s = "    abc    def   "
    s2 = s.strip()
    print(s2)   				# "abc    def"
    # 去掉左右两端的空格
    print(s2.strip("abc"))    	# "def"
    # 去掉指定的元素
    
  • lstrip() 从左侧去除

    s = "    abc    def   "
    s3 = s.lstrip()
    print(s3)   # "abc    def   "
    # 去掉左边空格
    
  • rstrip() 从右侧去除

    s = "    abc    def   "
    s4 = s.rstrip()
    print(s4)   # "    abc    def"
    # 去掉右边空格
    
  • replace() 替换指定值

    s = "abc def abc"
    ret1 = s.replace("abc","def")
    print(s)    # "abc def abc"
    print(ret1) # "def def def" 
    # 把abc替换成def
    ret2 = s.replace("abc","def",1)
    print(ret2)	# "def def abc"
    
  • split() 分割

    s = "abc_def_abc"
    ret3 = s.split("_")
    print(ret3) # ['abc', 'def', 'abc']
    # 字符串切割,根据 _ 进行切割
    
  • join() 拼接

    list = ['abc', 'def', 'abc']
    s = "_".join(list)
    print(s) # "abc_def_abc"
    # 将列表中的字符串用 _ 进行拼接
    

格式化

三种格式化方法:

  • % 格式化

  • f-string

  • format()

  • 示例

    name = "sylar"
    age = 18
    
    s1 = "我叫%s, 我今年%d岁了" % (name, age)  
    s2 = f"我叫{name}, 我今年{age}岁了" # f-string
    s3 = "我叫{}, 我今年{}岁了".format(name, age)
    s4 = "我叫{1}, 我今年{0}岁了".format(age, name)
    s5 = "我叫{Name}, 我今年{Age}岁了".format(Name=name, Age=age)
    
    # 输出:我叫sylar, 我今年18岁了
    

查找和统计

  • count() 计数

    查找字符出现的次数

    s = "我喜欢敲代码,我会写的语言有,java,python,C,C++,C#等等"
    rest1 = s.count("我")
    print(rest1)    # 2
    
    rest2 = s.count("java")
    print(rest2)    # 1
    
  • find() 查找

    查找字符出现的位置

    s = "我喜欢敲代码,我会写的语言有,java,python,C,C++,C#等等"
    rest1 = s.find("我")
    print(rest1)    # 0
    
    rest2 = s.find("java")
    print(rest2)    # 15
    
    rest3 = s.find("我",3,14)	#通过切片找
    print(rest3)
    
  • indaex() 索引

    求索引的位置,找不到就会报错

    s = "我喜欢敲代码,我会写的语言有,java,python,C,C++,C#等等"
    rest1 = s.index("喜欢")
    print(rest1)	# 1
    

条件判断

  • startswith() 判断起始

    判断开头是否与查找内容相匹配,匹配成功结果为True

    s = "我喜欢敲代码,我会写的语言有,java,python,C,C++,C#等等"
    rest1 = s.startswith("喜欢")  # 判断是否以“喜欢”为开头,否输出False,是结果为True
    print(rest1)    # False
    
    rest2 = s.startswith("我喜欢")
    print(rest2)    # True
    
  • endswith() 判断结尾

    判断结尾是否是所查找的内容

    s = "我喜欢敲代码,我会写的语言有,java,python,C,C++,C#等等"
    rest1 = s.endswith("C#")
    print(rest1)    # False
    
    rest2 = s.endswith("等等")
    print(rest2)    # True
    
  • 判断是否由数字组成

    s1 = "0.45"
    s2 = "一二三"
    print(s1.isdigit())		# 带有小数点的也会输出 False
    print(s1.isdecimal())   # 能识别带有小数点的数字
    print(s2.isnumeric())   # 能识别中文(简体、繁体)数字
    

替换

  • replace()

    s = "123.12"
    s1 = s.replace(".","")
    s2 = s.replace("12","56")
    print(s1)   #12312
    print(s2)   #563.56
    

计算长度

  • len(),这是python的内置代码,在查看列表长度时同样适用

    s = "你是我的全部,你的就是我的"
    ret = len(s)
    print(ret)		# 13
    

迭代

  • for 循环来遍历(获取)字符串中的每一个字符

    s = "你是我的全部,你的就是我的"
    
    # 1.while循环
    index = 0
    while index < len(s):
        print(s[index])
        # index = index + 1
        index += 1
    
    # 2.for循环
    for i in s:
        print(i)
    

小结

函数功能描述
capitalize()将字符串的第一个字母(首字母)转换为大写,其余字母小写
lower()将字符串中所有字母转换为小写
casefold()lower()类似,但对某些字符的支持更全面
upper()将字符串中所有字母转换为大写
swapcase()将字符串中字母的大小写互换
title()字符串中特殊字符(如空格、中文、符号等)后的首字母大写
center(width, fillchar)将字符串扩展到指定长度width,原字符串居中,其余位置用fillchar填充
strip([chars])去除字符串两端的指定字符(默认去除空格);若指定chars,则去除两端包含的chars中任意字符
lstrip([chars])去除字符串左侧的指定字符(默认去除空格);规则同strip()
rstrip([chars])去除字符串右侧的指定字符(默认去除空格);规则同strip()
replace(old, new[, count])将字符串中old子串替换为new子串;count可选,指定替换次数(默认全部替换)
split(sep=None, maxsplit=-1)sep为分隔符分割字符串,返回列表;sep默认是任意 whitespace,maxsplit指定最大分割次数(默认全部分割)
join(iterable)将可迭代对象(如列表)中的字符串元素,用原字符串作为分隔符拼接成一个新字符串
format(*args, **kwargs)字符串格式化方法,通过{}占位符替换为指定值,支持位置参数、关键字参数等
count(sub[, start[, end]])统计子字符串sub在字符串中(可选startend区间内)出现的次数
find(sub[, start[, end]])查找子字符串sub在字符串中(可选startend区间内)第一次出现的索引,未找到返回-1
index(sub[, start[, end]])find()类似,但未找到子字符串时会抛出ValueError异常
startswith(prefix[, start[, end]])判断字符串(可选startend区间内)是否以prefix开头,返回布尔值
endswith(suffix[, start[, end]])判断字符串(可选startend区间内)是否以suffix结尾,返回布尔值
isdigit()判断字符串是否仅由数字(0-9)组成,带有小数点等符号时返回False
isdecimal()判断字符串是否仅由十进制数字组成,可识别带小数点的数字
isnumeric()判断字符串是否仅由数字组成,可识别中文(简体、繁体)数字等
len()内置函数,计算字符串的长度(包含的字符个数)

var code = “d8a3f001-ccf0-4a69-9d70-ffad0c8fc6ad”

posted @ 2025-11-04 22:05  stars-AI  阅读(1)  评论(0)    收藏  举报  来源