1、字符串前加 u
例:u"我是含有中文字符组成的字符串。"
作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
2、字符串前加 r
例:r"\n\n\n\n\n\n”
作用:声明后面的字符串是普通字符串,相对的,特殊字符串中含有:转义字符 \n \t 什么什么的。
3、转义字符
在字符串前加“r”代表取消字符串中的转义字符
4、查找字符串
4.1 find
检测str是否包含在 my_str中,如果是返回开始的索引值,否则返回-1
my_str.find(str, start=0, end=len(mystr))
4.2 rfind
类似于 find()函数,不过是从右边开始查找
my_str.rfind(str, start=0, end=len(my_str) )
4.3 count
返回 str在start和end之间在 my_str里面出现的次数
my_str.count(str, start=0, end=len(mystr))
5、字符串分割与合并(split\join)
5.1 字符串分割(split)
str.split(str=“”, num=string.count(str))
参数· str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数
string.count(str) 字符串中包含某字符串的次数(见本文4.3)
str1 = " 张三,李四,王五 "
print(str1.split()) # 去除字符串开头和结尾的空白字符。
str = "张三,李四,王五"
print(str.split(",")) # 将字符串按照“,”进行分割,返回结果是列表的形式 ['张三', '李四', '王五']
print(str.split(",",1)) # 此处只要求分割一次,因此得到数据为['张三', '李四,王五']两个元素
print(str.split(",")[0])
print(str.split(",")[1])
print(str.split(",")[2])
print(str.count(",")) # 计算分割了几次,此处分割了2此,得到三个元素
# 分割split(), 合并join()
b = "a b c d e f e g"
c = b.split(" ")
d = b. split(" ", 2)
e = b.split("e",1)
f = b.split("e")
print(c,"\n",d,"\n",e,"\n",f)
5.2 字符串合并
m = ["abc","def","123"]
n = "—".join(m) # 前面为指定的连接符
print(n)
6、字符串截取(切片)
[起始:结束:步长]
注意
- 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔
- 默认“步长”为1,即取完一个下标的数据之后,第二个下标的是在刚刚下标基础上+1
- 步长为正数,表示从左向右取数据
- 步长为负数,表示从右向左取数据
str = "abcdefghijklmn"
str1 = str[:] #截取字符串的全部字符
str2 = str[0:3] #截取第一位到第三位的字符 ,从第一位开始截取时0可以省略
str3 = str[5:9] #截取第六位到第10位的字符
str4 = str[5:] #截取第六位到结尾的字符
str5 = str[:-3] #截取从开头到倒数第三个字符之前
str6 = str[3] #截取第4个字符
str7 = str[-3] #截取倒数第3个字符
print(str1, "\n", str2, '\n',str3, '\n',str4, '\n',str5, '\n',str6, '\n',str7, '\n',)
总结
- 切片使用规则中,要么一个冒号[开始位置:结束位置],要么两个冒号[开始位置:结束位置:步长]
- 不写步长时,默认为1
- 步长为正数,表示从左向右取数据
- 步长为负数,表示从右向左取数据
- 当开始位置、结束位置都没有设定时,要看步长,如果步长为正数此时开始位置理解为最左 结束位置为最右,如果步长为负数此时开始位置理解为最右结束位置为最左
7、检查字符串开头和结尾字符
7.1 startwhith——检查字符串是否是以 特定字符串开头
检查字符串是否是以 特定字符串开头, 是则返回 True,否则返回 False
my_str.startswith(hello)
7.2 endswith——检查字符串是否以特定字符串结束
检查字符串是否以obj结束,如果是返回True,否则返回 False.
my_str.endswith(obj)
8、大小写转转
8.1 lower——转换 my_str 中所有大写字符为小写
my_str.lower()
8.2 upper——转换 my_str 中所有小写字母为大写
my_str.upper()
9、去除前后空格
strip():把头和尾的空格去掉:my_str.strip()
lstrip():把左边的空格去掉: my_str.lstrip()
rstrip():把右边的空格去掉 my_str.rstrip()
10,partition——将字符串按照某字符串分割成三部分
把my_str以str分割成三部分,str前,str和str后
In [42]: my_str = "welcome to my web https://www.itprojects.cn"
In [43]: my_str.partition("web")
Out[43]: ('welcome to my ', 'web', ' https://www.itprojects.cn')
11、按照行分隔,返回一个包含各行作为元素的列表(splitlines)
[47]: my_str = """welcome to my web
...: my web site is https://www.itprojects.cn
...: thank you"""
In [48]: my_str.splitlines()
Out[48]: ['welcome to my web', 'my web site is https://www.itprojects.cn', 'thank you']
12、判断字符串所有字符类型
12.1判断字符串所有字符都是字母(isalpha)
如果 my_str 所有字符都是字母 则返回 True,否则返回 False
my_str.isalpha()
12.2判断字符串所有字符都是数字(isdigit)
my_str.isdigit()
my_str.isdigit()
12.3判断字符串所有字符都是数字或字母(isalnum)
如果 my_str 所有字符都是字母或数字则返回 True,否则返回 False
In [65]: my_str = "abc123"
In [66]: my_str.isalnum()
Out[66]: True
13、遍历所有字符串
a = "abcdefg"
print("方式1")
for i in a:
print(i)
print("方式2")
for i in range(len(a)):
print(a[i])
print("方式3,反向取值")
print(a[-1])
14、replace替换
把 my_str 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次
my_str.replace(str1, str2, mystr.count(str1))
a = "abcdefg"
# a[1] = "z" # 字符串是不可变的序列,因此此种方式错误
b = ["a","b","c","d","e","f"]
b[1]="z" # 列表可以这样替换
print(b)
a = a.replace("b","z")
print(a)
15、字符搜索操作(in)
m = "a b c d e f e g"
print("b" in m)
print(m.index("g"))
16、字符串格式 格式化
更为详细内容见:应知道的16个Python基础知识
16.1 format格式化
name = "Jim"
score = 90
print("{}的成绩为{}".format(name,score))
print("{0}的成绩为{1}".format(name,score))
print("{1}的成绩为{0}".format(name,score))
print("{n}的成绩为{m}".format(m=name,n=score))
16.2 f简化格式化
name = "Alice"
age = 25
formatted_string = f"My name is {name} and I'm {age} years old."
print(formatted_string)