String字符串

一、String字符串

1.概念

字符串就是由若干个字符组成的有限序列

字符:字母,数字,特殊符号,中文

表示形式:采用的单引号或者双引号

注意:字符串属于不可变实体

2.创建字符串

代码演示:

str1 = "hello"
str2 = 'hello'
str3 = 'h'   #Python不支持单字符类型,单字符在Python中也是一个字符串

3.字符串运算

代码演示:

#字符串的运算
#1.字符串连接【拼接】 :+
#注意:+只能用于字符串和字符串之间的拼接
s1 = "welcome "
s2 = "to china"
print(s1 + s2)
print(s1)
print(s2)
​
#2.重复输出字符串  :*
s3 = "good"
print(s3 * 3)
print(s3,s3,s3)
#注意:不管是+还是*,运算结束之后都是生成了一个新的字符串
​
#3.获取字符串中的某个字符
#和list以及tuple类似,通过索引的方式访问字符串中的字符
#访问方式:字符串名[索引]
s4 = "ahjfahdgjag"
#获取值
print(s4[2])
#获取一个字符串 的长度
print(len(s4))
#遍历字符串:类似于list和tuple的遍历
for c in s4:
    print(c)
for i in range(len(s4)):
    print(s4[i])
for i,c in enumerate(s4):
    print(i,c)
​
#字符串的本质:在底层维护了一个由不同的字符组成的元组  ('a','h','j'....)
#s4[2] = 'o' #TypeError: 'str' object does not support item assignment
​
#4.截取字符串【切片】
str1 = "hello world"
#截取指定范围的字符串【子字符串】   包头不包尾的操作
print(str1[6:11])
#从开头截取到指定位置
print(str1[:11])
#从指定位置截取到末尾
print(str1[6:])
​
str2 = "abc123456"
print(str2[2:5])  #c12
print(str2[2:])  #c123456
print(str2[2::2])    #[start:end:step]    c246
print(str2[::-1])   #step为正数,则从左向右获取,如果未负数,则从右向左获取       654321cba
print(str2[-3:-1])  #45
​
#5.判断一个字符串中是否包含指定字符:成员运算符
str3 = "you are a good man"
print("good" in str3)
print("good" not in str3)

4.格式化字符串

通过%来改变后面字母的含义,%被称为占位符

​ %s:字符串【对象】

​ %d:整型

​ %f:浮点型,可以指定小数点后的位数【精度】

代码演示:

print("hello")
​
num = 10
str1 = "hello"
print(num,str1)
print("num = ",num,"str1 = ",str1)
#格式化
print("%d + %s" %(num,str1))
​
f = 12.34545
print("num = %d,str1 = %s,f = %f"%(num,str1,f))
print("num = %d,str1 = %s,f = %.2f"%(num,str1,f))
​
#注意:%.nf,如果n省略,则表示取整,如果n>=1,则表示保留小数点后n位,会进行四舍五入的操作

5.转义字符

通过\改变后面字母的含义

\t:相当于按下tab键

\n:换行符

代码演示:

#打印反斜杠\
str1 = "\\"
print(str1)
​
#打印单引号
str2 = "'"
print(str2)
str2 = '\''
​
​
#打印"hello"
print("\"hello\"")
​
str3 = "hi\thello"
print(str3)
​
str4 = "hi\nhello"
print(str4)
​
#如果字符串内部有很多的换行,用\n写在一行里面不好阅读
str5 = "today\nis\na\ngood\nday"
print(str5)
​
#简化
str6 = """today
is
a
good
day
"""
print(str6)
​
#C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频
str7 = "C:\\Users\\Administrator\\Desktop\\XA-Python1804\\Day6\\视频"
print(str7)
​
#为了简化,Python允许使用r"xxxxx',表示字符串内部的字符默认不需要手动转义
str8 = r"C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频"
print(str8)

6.字符串功能

代码演示:

#1.字符串和整数之间的转换
#int() str()
#eval(str):将str转换为有效的表达式,参与运算,并返回运算结果
num1 = eval("123")
print(num1)
print(type(num1))
print(int("123"))
​
print(eval("+123"))
print(int("+123"))
print(eval("-123"))
print(int("-123"))
​
print(eval("12+3"))
#print(int("12+3"))   #ValueError: invalid literal for int() with base 10: '12+3'
print(eval("12-3"))
#print(int("12-3"))  #ValueError: invalid literal for int() with base 10: '12-3'
​
#总结;eval():转换为数学运算     int():转换为整数
​
​
#2.统计子字符串在原字符串中出现的次数:count
#count(str[,start,end])
str1 = "good good good"
c = str1.count("good")
print(c)
​
#3.大小写字母转换
#lower():将字符串中的大写字母转换为小写字母
str2 = "Tomorrow is Better"
newStr1 = str2.lower()
print(newStr1)
print(str2)
​
#upper():将小写字母转换为大写
print(str2.upper())
​
#swapcase():将大写转换为小写,将小写转换为大写
print(str2.swapcase())
​
#capitalize():  首个单词的首字母大写,其他全部小写
print(str2.capitalize())
​
#title():每个单词的首字母大写
print(str2.title())

 

7.常用功能

7.1填充

代码演示:

#填充【了解】
#center(width[,fillchar]):返回一个指定宽度的居中字符串,width是填充之后整个字符串的长度,
# fillchar是需要被填充的字符串,默认为空格
#char---->character字符
str1 = "hello"
print(str1.center(20))
print(str1.center(20,"*"))
#print(str1.center(20,"abc"))  #TypeError: The fill character must be exactly one character long
#注意:使用了center功能之后,生成了一个新的字符串,原字符串出现在中间,两边使用指定的字符进行填充
#注意:fillchar必须只有一个字符
​
#ljust(width[,fillchar])  返回一个指定宽度的字符串,将原字符串居左对齐,width是填充之后整个字符串的长度,
#l:left
print(str1.ljust(20,"%"))
​
#rjust(width[,fillchar])  返回一个指定宽度的字符串,将原字符串居右对齐,width是填充之后整个字符串的长度,
#r:right
print(str1.rjust(20,"%"))
​
#zfill(width)返回一个指定宽度的字符串,将原字符串居右对齐,width使用0填充
print(str1.zfill(20))
​

7.2查找

代码演示:

#查找【掌握】
str2 = "abcdefgh123hello"
#find(str[,start,end]) :从左到右依次检测,str是否在原字符串中,如果存在,则返回位置
#特点:如果查找到,返回的是子字符串的第一个字符在原字符串中的下标;如果查找不到则返回-1
print(str2.find("hello"))  #11
print(str2.find("e"))   #4
print(str2.find("yyy"))  #-1
print(str2.find("h",3,10))
#注意:如果子字符串在原字符串中出现多次,则只返回第一次查找到的下标
​
#rfind()  :类似于find,只是从右往左检测
print(str2.rfind("hello"))   #11
print(str2.rfind("e"))  #12
​
#index():和find的用法基本相同,唯一的区别:find如果查找不到返回-1,但是index则直接报错
print(str2.index("hello"))   #11
#print(str2.index("yyy"))    #ValueError: substring not found
​
#rindex()
​
#max()  :返回原字符串中的最大字母
#使用格式:max或者min(str)
print(max(str2))
​
#min():返回原字符串中的最小字母
print(min(str2))

7.3提取

代码演示:

#提取:
#strip(str) :使用str作为条件提取字符串,需要注意:只能去除两端的指定字符【trim】
str1 = "*****today is ******** a good day******"
print(str1.strip("*"))
​
#lstrip() :去除左边的指定字符串
print(str1.lstrip("*"))
​
#rstrip():去除右边的指定字符串
print(str1.rstrip("*"))

7.4分割和合并

代码演示:

#分割和合并【掌握】:正则表达式
​
#split(str[,num]);使用指定字符串分割原字符串,返回一个列表【字符串转换为列表】
str1 = "today is a good day"
print(str1.split(" "))  #['today', 'is', 'a', 'good', 'day']
str2 = "hello"
#print(str1.split(""))  #ValueError: empty separator
#注意:使用split功能的时候,其中的分割字符串不能为空
​
#num表示分割符出现的次数
print(str1.split(" ",2))
​
#sliptlines(flag)  按照换行符【\n,\r,\r\n】分割,结果为列表
#falg可写可不写,False:忽略换行符,True:则表示保留换行符
s1 = """today
is
a
good
day
"""
print(s1.splitlines(True))   #['today\n', 'is\n', 'a\n', 'good\n', 'day\n']
print(s1.splitlines(False))  #['today', 'is', 'a', 'good', 'day']
​
​
#join(list);将原字符串作为连接符号,将列表中的元素连接起来,结果为一个字符串【列表转换为字符串】
str3 = "-"
list1 = ["zhangsan","lisi","jack"]
str4 = str3.join(list1)
print(str4)

7.5替换

代码演示:

#替换【掌握】
#replace(old,new[,max]):将原字符串中的old字符串替换为new的字符串,如果指定了max,则替换的次数不超过max次
str1 = "today is a good day"
#需求:将其中的good替换为bad
#注意:替换之后仍然是生成了一个新的字符串
print(str1.replace("good","bad"))
print(str1)
​
str2 = "today is a good good good day"
#注意:max:从左到右检测,只替换指定个数的字符串
print(str2.replace("good","bad",2))
​
#replaceAll()

7.6判断

代码演示:

#判断
#注意:全部返回的结果为布尔值
#isalpha():如果字符串至少有一个字符并且所有的字符都是字母的话,则返回True
print("".isalpha())
print("abc".isalpha())
print("abc123".isalpha())
​
print("~~~~~~~")
​
#isalnum():如果字符串至少有一个字符并且所有的字符是字母或者数字的话,则返回true
print("".isalnum())
print("abc".isalnum())
print("abc123".isalnum())
​
print("~~~~~~~")
​
#isupper():如果字符串中至少包含一个区分大小写的字符,并且所有的字符都是大写,则返回True
print("abc".isupper())
print("123".isupper())
print("aBc".isupper())
print("ABC".isupper())   #True
​
#islower()
​
print("~~~~~~~")
​
#istitle():如果字符串中的单词是标题化的,则返回True
print("this is a test".istitle())
print("This is a test".istitle())
print("This Is A Test".istitle())   #True
​
print("~~~~~~~")
​
#isdigit()【掌握】:判断字符串中是否只包含数字,则返回True
print("abc123".isdigit())
print("abc".isdigit())
print("123".isdigit())
#结合int("123")   int("123abc")使用
​
print("~~~~~~~")
​
#isnumeric():判断字符串中中是否只包含数字字符,则返回True
print("abc123".isnumeric())
print("abc".isnumeric())
print("123".isnumeric())
​
print("~~~~~~~")
​
#isdecimal():判断字符串中是否只包含十进制,则返回True
print("2434".isdecimal())
print("454e4".isdecimal())
​
print("~~~~~~~")
​
#isspace();判断字符串中是否只包含空格,则返回True
print("abc  43".isspace())
print("    ".isspace())   #True

7.7前缀和后缀

代码演示:

前缀和后缀【掌握】
#结果为布尔值
​
#startswith(str[,beg=0,end=len(string)])
#判断原字符串是否是以指定子字符串开头的,如果beg和end指定值,则表示在指定的范围内判断
str1 = "helloghjshgj"
print(str1.startswith("hello"))
​
#endswith(str[,beg=0,end=len(string)])
print(str1.endswith("gj"))

7.8编解码

代码演示:

#字符串的编码和解码
#https://www.baidu.com/s?wd=%E5%8D%83%E9%94%8B&rsv_spt=1&rsv_iqid=0xdae3d65100023b6c&issp=1&f=8
#encode():将字符串转换为字节类型的过程
str2 = "hello 中文"
print(str2.encode())
print(str2.encode("utf-8"))
print(str2.encode("gbk"))
​
byte11 = str2.encode("gbk")
print(type(byte11))
​
#decode() :将字节类型转换为字符串的过程
print(byte11.decode("gbk"))

7.9ASCII码转换

代码演示:

#ASCII码转换
#ord():获取字符的整数表示
print(ord("A"))
print(ord("a"))
​
#chr():把编码转换为对应的字符
print(chr(65))
print(chr(97))
​
#需求:将hello转换为大写输出
s1 = "hello"
s2 = ""
for i in range(len(s1)):
    num = ord(s1[i])
    num -= 32
    ch = chr(num)
    print(ch)
    s2 += ch
​
print(s2)

7.10字符串映射

代码演示:

#字符串的映射【ASCII码】
#maketrans(str1,str2):创建字符映射的转换表
#str1表示需要被转换的字符串,str2需要 转换的目标
t = str.maketrans("ac","68")
print(t)  #{97: 54, 99: 56}
​
#translate(table)
s3 = "hello abc"
print(s3.translate(t))   #hello 6b8

 

归纳:  字符串格式化符号含义
 

符号

说明

%c

格式化字符及其 ASCII 码

%s

格式化字符串

%d

格式化整数

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同 %e,用科学计数法格式化浮点数

%g

根据值的大小决定使用 %f 或 %e

%G

作用同 %g,根据值的大小决定使用 %f 或者 %E



格式化操作符辅助命令
 

符号

说明

m.n

m 是显示的最小总宽度,n 是小数点后的位数

-

用于左对齐

+

在正数前面显示加号(+)

#

在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'

0

显示的数字前面填充 '0' 取代空格



Python 的转义字符及其含义
 

符号

说明

\'

单引号

\"

双引号

\a

发出系统响铃声

\b

退格符

\n

换行符

\t

横向制表符(TAB)

\v

纵向制表符

\r

回车符

\f

换页符

\o

八进制数代表的字符

\x

十六进制数代表的字符

\0

表示一个空字符

\\

反斜杠

 归纳:字符串格式化符号含义引用于https://fishc.com.cn/forum.php?mod=viewthread&tid=92997&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值