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在字符串中(可选start到end区间内)出现的次数 |
find(sub[, start[, end]]) | 查找子字符串sub在字符串中(可选start到end区间内)第一次出现的索引,未找到返回-1 |
index(sub[, start[, end]]) | 与find()类似,但未找到子字符串时会抛出ValueError异常 |
startswith(prefix[, start[, end]]) | 判断字符串(可选start到end区间内)是否以prefix开头,返回布尔值 |
endswith(suffix[, start[, end]]) | 判断字符串(可选start到end区间内)是否以suffix结尾,返回布尔值 |
isdigit() | 判断字符串是否仅由数字(0-9)组成,带有小数点等符号时返回False |
isdecimal() | 判断字符串是否仅由十进制数字组成,可识别带小数点的数字 |
isnumeric() | 判断字符串是否仅由数字组成,可识别中文(简体、繁体)数字等 |
len() | 内置函数,计算字符串的长度(包含的字符个数) |
var code = “d8a3f001-ccf0-4a69-9d70-ffad0c8fc6ad”

浙公网安备 33010602011771号