字符串的转义符:
在python中,字符串的转义是指在字符串中使用特殊的字符序列来表示一些特殊字符。
在python中,字符串的转义符是反斜杠\,可以用来表示一些特殊的字符,如单引号、双引号、换行符、制表符等。
以下是一些常用的字符串转义符:
\' 表示单引号
\" 表示双引号
\\ 表示反斜杠
\n 表示换行符
\t 表示制表符
\r 表示回车符转义符的功能:
① 将某些普通符号给予特殊的功能
② 将一些特殊功能的符号普通化
具体代码示例如下:
\n换行符:
#\n换行效果:
s = "你好 \n中国欢迎你!"
print(s)
#为避免报错,将特殊符号普通化的效果:
s2 = 'let\'s Go!'
print(s2)
\\反斜杠:
#windows系统里的path路径,默认也是\:
path = "\wang\next\kkk.txt"
print(path)
#输出:明细不是我们想要的正确路径
\wang
ext\kkk.txt
#再加1个\,将路径的\普通化,2个\\编程一个普通的反斜杠:
path = "\wang\\next\kkk.txt"
print(path)
#输出:就是一个正常的path
\wang\next\kkk.txt
print('I\'m a student.')
print("He said,\"Hello world!\"")
print("Hello\tworld!")
#输出:
I'm a student.
He said,"Hello world!"
Hello world!
字符串的格式化输出:
%占位符:
# print("我的名字叫小美,我的年龄是18,我的身高是165")
name = "小美"
age = 18
height = 165
#根据变量,取出对应的值
print("我的名字叫%s,我的年龄%d,我的身高%dcm" % (name,age,height))
'''
输出:
我的名字叫小美,我的年龄18,我的身高165cm
'''
%d:表示int占位、 %s:表示str占位
name = input("请输入姓名:")
sex = input("请输入性别:")
age = 23
#输入:上官婉儿,性别:女3
aa = "姓名:%s.性别:%s.年龄%d"%(name,sex,age)
print(aa)
#输出:
#姓名:上官婉儿.性别:女.年龄23
%f:表示float占位
a = 9999.222222222
print("金额为:%10.2f"%a) #靠右对齐,左边没有的用空格填充
print("金额为:%010.2f"%a) #靠右对齐,左边没有的用0填充
print("金额为:%+10.2f"%a) #靠右对齐,左边没有的用空格填充,如果为正数,前面多个+
print("金额为:%-10.2f"%a) #靠左对齐
#输出效果:
金额为: 9999.22
金额为:0009999.22
金额为: +9999.22
金额为:9999.22
f.format():
# print("我的名字叫小美,我的年龄是18,我的身高是165")
print(f"我的名字叫{name},我的年龄{age},我的身高{height}")
'''
输出:
我的名字叫小美,我的年龄18,我的身高165
'''
字符串的序列操作
下标索引取值:
字符串下标取值:可以正向取,也可以反向取
正索引:从0 开始
负索引:从-1 开始
a = "hellowoed"
'''
h e l l o w r o d
正索引: 0 1 2 3 4 5 6 7 8
负索引: -9 -8 -7 -6 -5 -4 -3 -2 -1
'''
print(a[0]) #正索引
print(a[n-1]) #负索引第一种
print(a[-1]) #负索引第二种,一般用于取末尾取值
#字符串求长度 len(a)
print(len(a))
#输出:9
字符串切片:
str[ 开始索引:结束索引: 步长 ],含头不含尾,step默认为1,若刚好取1,可省略不写
步长:好比爬楼梯,步长为1,一次爬一个楼梯;步长为2,每次爬2个楼梯
a = "hello wang"
print(a[0:5])
print(a[6:9])
print(a[6:-1])
print(a[6:]) #缺省状态,取到最后一个值
print(a[:7]) #缺省状态,从0开始取
print(a[0:5:2])
print(a[:]) #缺省,全部取
print(a[::-1]) #字符串翻转
#输出:
hello
wan
wan
wang
hello w
hlo
hello wang
gnaw olleh
字符串拼接:+
字符串只能和字符串拼接,如果和数字拼接,需要先进行转换
s1 = "hello,"
s2 = "wang"
print(s1+s2)
name = "wang"
age = "18"
print("我的姓名:" + name + " 我的年龄:" + age + "!")
s3 = f"我的姓名:{name} 我的年龄:{age}!" #推荐使用格式化输出
print(s3)
#两种写法输出效果一致:
hello,wang
我的姓名:wang 我的年龄:18!
我的姓名:wang 我的年龄:18!
针对容器类型:计算字符串长度
内置函数:len()
s4 = "hello world"
print(len(s4))
s5 = "i am 王"
print(len(s5))
#输出:
11
6
针对容器类型:in判断
判断某个字符串的元素是否存在
s6 = "wang rain eric alvin"
print("rain" in s6)
print("rains" in s5)
#输出:
True
False
字符串输入、输出函数
输入函数:input()
向程序输入字符串,给对应的变量进行赋值
name = input("请输入姓名:") #在终端输入wang
age = input("请输入年龄:") #在终端输入22
print(f"姓名:{name} 年龄:{age}")
#输出:
姓名:wang 年龄:22
输出函数:print()
print(100)
print("200")
#输出:
100
200
字符串内置方法
方法 | 作用 | 方法 | 作用 |
---|---|---|---|
upper | 将字符全部转换为大写 | capitalize | 将第一个字符串的首字母换成大写 |
lower | 将字符全部转换为小写 | title | 将所有字符串的首字母换成大写 |
startswith() | 是否以某个字符开头 | isdigit() | 是否全数字 |
endswith() | 是否以某个字符结尾 | strip() | 去两边空格 |
join() | 将多个字符串连接在一起 | replace() | 替换字符 |
split() | 按某字符分割字符串,默认按空格分隔 | partition() | 字符串分割 |
find() | 搜索指定字符串,没有返回-1 | rfind() | 查找指定字符或字符串的最后出现位置 |
index() | 查找指定字符,但是找不到会报错 | count() | 统计指定的字符串出现的次数 |
字符大小写转换:
#upper,lower使用:
s1 = "Hello World"
s2 = s1.lower() #可以存到新的变量里
print(s1.upper()) #也可以直接结合print打印
print(s2)
#输出结果:
HELLO WORLD
hello world
#capitalize、title使用:
a = "hello world"
b = a.capitalize()
print(b)
c = a.title()
print(c)
#输出结果:
Hello world
Hello World
字符判断:
#startswith、endswith使用:
s3 = "apple banana peach orange"
print(s3.startswith("apple"))
print(s3.endswith("apple"))
#输出:
True
False
#isdigit使用,一般用于分支条件判断:
numstr = input("请输入一个数字:")
print(numstr.isdigit())
#如果输入100,输出为True;如果输入100元,输出为False
去除字符两边空格:
#strip使用:
user = input("请输入用户名:") #用户名: wang
user = user.strip()
print(user,len(user))
#输出:wang 4
字符串分割及拼接:
'''
split:字符串分割
计算下列字符串中有几个城市
'''
citys = "北京 哈尔滨 深圳 西安"
ret = citys.split()
print(ret)
print(len(ret))
#输出:
['北京', '哈尔滨', '深圳', '西安']
4
'''
partition:字符串分割
'''
a = "第一段第二段第三段"
b = a.partition("第二段")
print(b)
c = a.partition("第四段")
print(c)
#输出:
('第一段', '第二段', '第三段')
('第一段第二段第三段', '', '')
#jion:字符串拼接
a =[ "李四啥;张三;李四"] #前端列表直接传给后端
b = ";".join(a) #后端处理取值:字符串用分号拼接
print(b)
c = ";".join("123") #字符串形式,取值做切割
print(c)
d = ";".join(a)+";" #最后一个字符串后面加分号
print(d)
#输出:
李四啥;张三;李四
1;2;3
李四啥;张三;李四;
字符查找:
#find查找:查找字符串中是否包含某个字符,并返回字符位置;如果不存在则返回-1
s = "wang rain eric alvin"
ret = s.find("rain")
print(ret)
ret2 = s.find("abc")
print(ret2)
#输出:
5
-1
# index查找:找到了要查找的字符,返回字符位置,如果找不到则报错
r = s.index("rain")
print(r)
r1 = s.index("wps")
print(r1)
#输出:
5
r1 = s.index("wps")
^^^^^^^^^^^^^^
ValueError: substring not found #找不到wps字符则报错
#rfind查找:查找指定字符出现的最后位置,找不到时返回-1
s = "wang rain eric alvin"
s1 = s.rfind("i")
print(s1)
s2 = s.rfind("s")
print(s2)
#输出:
18
-1
字符串统计:
#count:统计指定字符出现的次数
names = "小红 小敏 小明 小甜 小红"
print(names.count("小红"))
#输出:
2
字符串替换:
#replace:字符串修改,修改后生成的是新值
info = "i am wang"
new_info = info.replace("wang","li")
print(new_info)
#输出:
i am li
info_1 = "i am wang; wang is very nice"
new_infos = info_1.replace("wang","li")
print(new_infos)
#输出:将字符串中所有的wang全部修改为li
i am li; li is very nice
info_2 = "i am wang; wang is very nice;and wang very shuai"
new_infos = info_2.replace("wang","li",2) #指定修改次数,一般用的比较少
print(new_infos)
#输出:只讲前两次出现的wang改为li
i am li; li is very nice;and wang very shuai
字符串类型转换:
python提供内置方法:
可以将数字类型的字符串转为数字 -> str 转 int
可以将数字转换为字符串 -> int 转 str
示例如下:
#数字转字符串
x = 100
y = str(x)
print(y)
print(type(y))
#输出:
100
<class 'str'>
#字符串转数字,只能是纯数字的字符串,否则会报错
a = "100"
b = int(a)
print(b)
print(type(b))
#输出:
100
<class 'int'>
但是,float类型的字符,不能直接转换为int,会报错:
如果遇到需要将float类型的字符转为int型:
可以先把float类型的字符转为float -> 再把float转为Int
str = "3.14159265358979323"
d = float(str)
d2 = int(d)
print(d2)
然后就能得到想要的int: