阅读 279

猪行天下之Python基础——3.5 字符串

内容简述:

  • 1、字符串(String)

1、字符串(String)

字符串是日常开发中用的最广泛的数据类型了,可以是用「单引号」或「双引号」进行创建。字符串是由多个字符拼接成的序列,一般用于表示文本。如果想让字符串包含换行缩进等格式时可以使用「三引号」(''')来修饰,一般打印段落文字时用得较多。另外字符串是「不可变数据」,定义以后就不能修改元素了,比如str_1 = "abc",如果调用str_1[0] = 'd',这样是会报错的,只能 通过 +, *, 分片等方式 进行「拼接」,间接得到相同的字符串内容,不过已经不是原先的字符串了,变量指向新的字符串,而旧的字符串对象最后会被Python的回收机制回收掉

① 字符串的基本操作

代码示例如下

# 1.字符串创建
str_1 = "Hello Python!"
str_2 = str(123)

# 2.分片相关操作(和前面4.4.4列表操作一致)
print("str_1[3] = %s" % str_1[3])
print("str_1[2:] = %s" % str_1[2:])
print("str_1[2:5] = %s" % str_1[2:5])
print("str_1[2:10:2] = %s" % str_1[2:10:2])
print("str_1[0:8] + str_1[8:] = %s" % (str_1[0:8] + str_1[8:]))
print("str_1[6:] * 3 = %s" % (str_1[6:] * 3))
print("str_2的数据类型:%s" % type(str_2))
复制代码

运行结果如下

str_1[3] = l
str_1[2:] = llo Python!
str_1[2:5] = llo
str_1[2:10:2] = loPt
str_1[0:8] + str_1[8:] = Hello Python!
str_1[6:] * 3 = Python!Python!Python!
str_2的数据类型:<class 'str'>
复制代码

② 转义字符

python用反斜杠(\)转义字符,所有转义字符如下表所示:

转义字符 作用 转义字符 作用
行尾的\ 续行符 \000
\ 反斜杠 \n 换行
\' 单引号 \v 纵向制表符
\a 响铃 \t 横向制表符
\b 退格 \r 回车
\e 转义 \f 换页
\o 八进制数代表字符 \x 十六进制数代表字符

③ 字符串操作的相关函数

Python字符串操作相关的函数有很多,不建议死记,用到的时候查表即可,相关的操作函数
如下表所示:

函数名 作用
capitalize() 把字符串的第一个字符改为大写
casefold() 把整个字符串的所有字符改为小写
center(width) 将字符串居中,并使用空格填充至长度width的新字符串
count(sub[,start[,end]]) 返同sub在字符申里边出现的次数,start和end参数表示范围,可选
encode(encoding= 'utf-8 ',errors='strict') 以encoding指定的编码格式对字符串进行编码
endswith(sub[,start[,end]]) 检查字符串是否以sub 子字符串结束,如果是返回True,否则返回False。start和end参数表示范围,可选
expandtabs([tabsize= 8]) 把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8
find(sub[,start[,end]]) 检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选
index(sub[,start[,end]]) 跟find方法一样,不过如果sub不在string中会产生一个异常
isalnum() 如果字符串中至少有一个字符,并且所有字符都是字母或数字则返回True,否则返回False
isalpha() 如果字符串至少有一个字符串,并且所有字符都是字母则返回True,否则返回False
isdecimal() 如果字符串只包含十进制数字则返回True,否则返回False
isdigit() 如果字符串只包含数字则返回True,否则返回False
islower() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False
isnumeric() 如果字符串中只包含数字字符,则返回True,否则返回False
isspace() 如果字符串中只包含空格,则返回True,否则返回False
istitle() 如果字符串是标题化(所有单词大写开头,其余小写),则返回True,否则返回False
isupper() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False
join(sub) 以字符串作为分隔符,插入到sub中所有的字符之间,使用+去拼接大量字符串的时候是很低效率的,
因为加号拼接会引起内存赋值一级垃圾回收操作,此时用join来拼接效率会高一些,比如: ''.join(['Hello','Python'])
ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串
lower() 转换字符串所有大写字符为小写
lstrip() 去除字符串左边的所有空格
partition(sub) 找到子字符串sub,把字符串分割成3元组(前,pre,后)如果字符串中不包含则返回('原字符串','','')
replace(old, new[,count]) 把字符串中的old子字符串替换成new,如果count指定,则替换次数不超过count次
rfind(sub[,start[,end]]) 和find()方法类似,不过是从右开始查找
rindex(sub[,start[,end]]) 和index()方法类似,不过是从右开始查找
rjust(width) 返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串
rpartition(sub) 类似于partition(),不过是从右边开始查找
rstrip() 删除字符串末尾的空格
split(sep=None,maxsplit=-1) 不带参数默认是以空格为分隔符切片字符串,如果maxspli参数t右设置,则仅分隔maxsplit个子字符串,
返回切片后的子字符串拼接的列表
splitlines([keepends]) 按照'\n'分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行
startswith(prefix[,start[,end]]) 检查字符串是否以prefix开头,是则返回True,否则返回False。start和end参数可以指定范围检查,可选
strip([chars]) 删除字符串前边和后边所有的空格,chars参数可定制删除的字符串,可选
swapcase() 反转字符串中的大小写
title() 返回标题化(所有的单词都是以大写开始,其余字母小写)的字符串
translate(table) 按照table的规则(可由str.maketrans('a','b')定制)转换字符串中的字符
upper() 转换字符串中所有的小写字符为大写
zfill(width) 返回长度为width的字符串,原字符串右对齐,前边用0填充

④ 字符串格式化

其实就是format函数的使用而已,使用代码示例如下:

# 位置参数
str1 = "{0}生{1},{2}{3}!".format("人""苦短""我用""Python")
print(str1)

# 关键字参数
str1 = "{a}生{c},{b}{d}!".format(a="人", c="苦短", b="我用", d="Python")
print(str1)

# 位置参数可以与关键字参数一起使用,不过位置参数需要在关键字参数前,否则会报错!
# 另外还有个叫替换域的东西,冒号代表格式化符号开始,比如下面的例子:
str1 = "{0}:{1:.4}".format("圆周率", 3.1415926)
print(str1)
复制代码

运行结果如下

人生苦短,我用Python
人生苦短,我用Python
圆周率:3.142
复制代码

⑤ 字符串前加'r','u'的意义

在字符串前加上「r或者R」,代表后面的字符串是「原始字符串」,即直接按照字面意思使用没有转义字符和不能打印的字符。比如print(r'Python\n'),输出的结果会是:Python\n。而在字符串前加上小写的「u」,代表后面的字符串「以Unicode格式进行编码」,一般用在中文字符串前,避免出现中文乱码问题。


如果本文对你有所帮助,欢迎
留言,点赞,转发
素质三连,谢谢😘~