str字符串
-str
转义字符
格式化
内建函数
- 字符串
表示文字信息
用单引号,双引号,三引号括起来
转义字符
用一个特色的方法表示出一系列不方便写出的内容,比如回车键,换行符,退格键等
借助反斜杠字符,一旦字符串中出现反斜杠,则发斜杠后面一个或者几个字符表示已经不是原来的意思了,进行了转义
在字符串中,一旦出现发斜杠就要加倍小心,可能转义字符出现
不同系统对换行操作有不同的表示
windows: \n
Linux: \r\n
# 转义字符的案例
# 想表达 Let's Go
# 使用转义字符
s = ' Let\'s Go'
print(s) # Let's Go
# 使用单双引号嵌套
a = "Let's Go"
print(a) # Let's Go
# 表示斜杠
# 比如 表示路径 C:\User\Anaconda
b = "C:\\User\\Anaconda" # \\表示 \
print(b) # C:\User\Anaconda
# 表示换行
# 表达效果是:
# i
# love
# you
c = "i\r\nlove\r\nyou"
print(c)
- 常用的转义字符串
| 转义字符 | 描述 |
|---|---|
| \ (在行尾时) | 续行符 * |
| \\ | 发斜杠符号** |
| \’ | 单引号***** |
| \" | 双引号***** |
| \a | 响铃 |
| \b | 退格 |
| \e | 转义 |
| \000 | 空 |
| \n | 换行***** |
| \v | 纵向制表符 |
| \t | 横向制表符 ***** |
| \r | 回车***** |
| \f | 换页 |
| \oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
| \xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
| \other | 其他的字符以普通格式输出 |
格式化
把字符串按照一定格式进行打印或者填充
格式化的分类
传统格式化
format
字符串的传统格式化方法
使用%进行格式化
%(百分号)也叫占位符
| 符号 | 含义 |
|---|---|
| %s | 字符串 |
| %r | 字符串,但是是使用reper而不是str |
| %c | 整数转换为单个字符 |
| %d | 十进制整数 |
| %u | 无符号 |
| %o | 表示八进制 |
| %x | 十六进制,字母为小写(x为小写) |
| %X | 十六进制,字母为大写(X) |
| %e | 浮点数(e为小写),例如2.87e+12 |
| %E | 浮点数(E为大写),例如2.87E+12 |
| %f,%F | 浮点数十进制形式 |
| %g,%G | 十进制形式浮动或者指数浮点自动转换 |
格式字符前出现整数表示此占位符所占位置的宽度
格式字符前边出现’-'表示左对齐
格式字符前边出现‘+’表示右对齐
0位数不足用‘0’补齐
width表示宽度
pricision表示精度
# 表示简单的字符串
s = " I love %s"
print(s) # I love %s
print(s% "须须") # I love 须须
print(s% "绒绒") # I love 绒绒
print(" I love %s" % "须须") # I love 须须
# 占位符一般只能被同类型替换,或者替换类型能被转换占位符的类型
# 以下例子属于特例
s = "主唱大人今年 %d 岁了, 他长得好有少年感"
print(s%29) # 主唱大人今年 29 岁了, 他长得好有少年
s = " I am %fKG weight,%fM heigh"
print(s) # I am %fKG weight,%fM heigh
# 如果需要格式化的信息多余一个,则用括号括起来就可以
# 以下打印使用了默认格式,多余打出了好多个 0
print(s%(60,1.70)) # I am 60.000000KG weight,1.700000M heigh
# 实际需要进行格式化的信息的数量必须与百分号后面给出的数据数量匹配
# 如下例子,实际需要格式的有4处,但是会给出数据的为 3个
s = " I am %2f KG weigh, %2f m heigh"
print(s%(61.2,1.72)) # I am 61.200000 KG weigh, 1.720000 m heigh
使用函数形式进行格式化,代替以前的百分号
# 不用指定位置,按顺序读取
# 方式1
s = "{} {}!"
print(s.format("hello", "world"))
#hello world!
# 方式2
s = "{} {}!".format("hello", "world")
print(s) # 相当于答应 "hello world"
#hello world!
# 设置指定位置
s = " {0} {1}!".format("hello","world")
print(s) # hello world!
s = " {1} {0}!".format("hello","world")
print(s) # hello world!
# 下面例子报错,跟上面例子进行对比
s = " I love {} and {}loves me".format("须须")
print(s) # tuple index out of range
# 使用命名参数
s = "我们是{your_name}, 我们的目的是{url},{shei}最帅"
s_dict = {"your_name": "ET天团",\
"url":"演唱会",\
"shei":"花花"
}
# ** 是解包操作
s = s.format(**s_dict)
print(s) # 我们是ET天团, 我们的目的是演唱会,花花最帅
# 对数字的格式需要用到
s = "I am {:.2f}m heigh, {:.2f}kg weigh"
print(s.format(1.72, 60.2)) # I am 1.72m heigh, 60.20kg weigh
# ~ ,< ,>分别是居中,左对齐,右对齐,后面带宽度
# :号后面带填充的字符,只能是一个字符,不能指定则默认是空格填充
# + 表示在正数前显示+, 负数前显示-;(空格)表示在正数前加空格
# b,d,o,x分别是二进制,十进制,八进制,十六进制
# 此外,还可以使用大括号 {}来转义大括号
s = "format函数是使用{}来进行占位的"
print(s) #format函数是使用{}来进行占位的
- str内置函数
很多语言字符串使用string表示,但是python中用str表示字符串
help(str)查看
字符串查找类,find,index,islower
find:查找字符串中是否包含一个字串
index:跟find的唯一区别是index如果找不到会引发异常
rfind,lfind(字母l):从左边开始查找或者从右开始查找
s = "i love zhuchangdaren"
s1 = "zhuchang"
# 返回第一次发现这个字符串的位置
s.find(s1) # 7
# 返回-1 表示没有找到
s2 = "zhuzhu"
s.find(s2) # -1
- 判断类函数
此类函数的特点是一般都是用is开头,比如islower
isalpha:判断是否是字母,需要注意的是两点
1,此函数默认的前提是字符串至少包含一个字符,如果没有,同样返回False
2, 汉字被认为是alph,所以,此函数不能作为区分英语字母还是汉字的标识,区分中英文使用Unicode码
注意使用区别,防止被坑
islower:判断是否是大写或者小写
# 以下三个都不是的,因为除了字母以内的空格等
s1 = "我们会回家的,et们"
s2 = "bengberba is friend of baberbeng"
s3 = "zhuchangdaren is the 1.st"
print(s1.isalpha()) # False
print(s2.isalpha()) # False
print(s3.isalpha()) # False
isdigit,isnumeric,isdecimal三个判断数字的函数
此类函数不建议使用,在后期爬虫中,判断是否是数字建议采用正则表达式的方式
# 需要注意的是,因为输入法的问题,输入罗马数字可能得不到我们想要的结果
chin_num = "一二三四"
print(chin_num.isdigit()) # False
print(chin_num.isnumeric()) # True
print(chin_num.isdecimal()) # False
对着三个函数的一个总结就是
| digit | True:Uniconde数字,byte数字(单字节),全角数字(双节字),罗马数字;False:罗马数字,汉字数字 Error:无 |
|---|---|
| isdecimal | True:Uniconde数字,全角数字(双节字);False:罗马数字,汉字数字;Error:byte(单字节) |
| isnumeric | True:Uniconde数字,全角数字(双节字),罗马数字,汉字数字;False:无;Error:byte(单字节) |
startswith/endswith:是否以xxx开头或者结尾
检测某个字符串是否以某一个子串开头,常用三个参数
suffx:被检查的字符串,必须有
start:检查范围的开始范围
end: 检查范围的结束范围
sasa = "rongrong"
huahua = "wanghuahua"
s = "rongrong really love rongrong "
print(s.startswith(sasa)) # True
print(s.endswith(huahua)) # False
islower/isupper:判断字符串是否是大写或者小写
s1 = "Sasa love rongrong"
s2 = "Sasaloverongrong"
s3 = "sasaloverongrong"
# s4包含空格,但空格不影响结果,忽略
s4 = "sasa love rongrong"
s5 = "飒飒是爱绒绒的"
print(s1.islower()) # False
print(s2.islower()) # False
print(s3.islower()) # True
print(s4.islower()) # True
# 汉字字符串没有大小写概念
print(s5.islower()) # False
print(s5.isupper()) # False
format:格式化用的
strip:这个函数主要作用是删除字符串的两边空格,其实这个函数允许去定义删除字符串两边的哪个字符,只不过如果不指定的话默认是空格。同样的还有lstrip和rstrip,此处1和r分别表示左边右边,即删除字符串左边或者右边制定字符,默认空格。需要注意的是,次此的删除不是删除一个,是指从头开始符合条件的连续字符。
strip相似的函数还包含lstrip,rstrip
join:这个函数主要对字符串进行拼接。它需要一个可以迭代的内容作为参数(迭代,这里暂时理解为一个列表),功能是把可迭代的字符串拼接在一起,中间使用调用字符串作为分隔符。
a = "WWWWWooo love huahua"
# 是否成功删除两边空格可以观察出来
print(a.strip())
print()
print(a.strip(), end="-----")
print("======")
print(a.strip("W"))
print()
print(a.strip("W"), end="======")
# join 的例子,我们需要使用s1,s2,s3作为分隔符,把ss内的内容拼接在一起
s1 = "$"
s2 = "*_*"
s3 = " = =。"
ss = ["我", "爱", "花花"]
print(s1.join(ss))
print(s2.join(ss))
print(s3.join(ss))
本文介绍了Python中的str字符串,包括转义字符、格式化、内置函数和判断类函数。str用于表示文字信息,可以使用单引号、双引号或三引号括起。转义字符用于表示特殊字符,如换行符。字符串格式化有传统和format两种方式,其中format函数更加灵活。str内置函数如find、index和islower等提供了字符串的查找和判断功能。此外,文章提到了isalpha、isdigit等判断数字的函数,并建议在实际应用中使用正则表达式来判断数字。

279

被折叠的 条评论
为什么被折叠?



