-
关键词:String字符串
-
摘要:String字符串的使用方法
目录
一、字符串基础
1、python字符串的特点
- Python 的字符串是不可变的,我们无法对原字符串做任何修改。
- 但可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。
- Python 不支持单字符类型,单字符也是作为一个字符串使用的。
- Python3 的字符默认就是 16 位 Unicode 编码,可用ord()或 chr()进行转换。
##ord()函数将字符转换为Unicode编码
>>> ord('A')
65
>>> ord('高')
39640
##chr()函数将Unicode编码转换为字符
>>> chr(66)
'B'
>>> ord('淇')
28103
2、引号创建字符串
- 单引号与双引号的混合使用,可用避免使用转义字符:
>>> a = "I'm a teacher!"
>>> b = 'my name is "TOM"'
- 三引号可以帮助我们创建多行字符串
>>> resume = ''' name="gaoqi"
company="sxt" age=18
lover="Tom"'''
>>> print(resume)
name="gaoqi"
company="sxt" age=18
lover="Tom"
##resume是一个str类型变量,只是其有三行而已
##不是说里面有四个变量
>>> print(type(resume))
<class 'str'>
3、字符串的拼接、复制和比较
- 可用 + 和 * 直接进行字符串的拼接与复制(但建议用join()函数进行拼接)
>>> a = "y" + "z"
>>> b = "x" + a
>>> print(b)
xyz
4、常用转义字符
转义字符 | 描述 |
---|---|
\(行尾) | 续行符 |
\b | 退格(Backspace) |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
- 若代码太多,一行放不下,可使用换行符 \ 转到下一行继续写;
- 若未使用换行符直接敲回车键,将产生错误
>>> print("aaa\
bbb")
aaabbb
5、len()函数
- len()函数用于计算字符串含有多少字符
- 其中,空格是空格字符,而非空字符
##字符串
>>> str = "abc"
>>> print(len(str))
3
##空格字符
>>> str = " "
>>> print(len(str))
1
##空字符
>>> str = ""
>>> print(len(str))
0
6、str()函数
- str()可将其他数据类型转换为字符串
- 当调用 print()函数时,解释器自动调用了str()函数将非字符串的对象转成了字符串
str(5.20) ==> ‘5.20’
str(3.14e2)==>’314.0’
str(True) ==> ‘True’
二、字符串操作
1、使用[]提取字符
- 被 [] 提取出的字符不可重新赋值,Python 的字符串不可变
- 正向搜索:最左侧第一个字符偏移量是 0,第二个偏移量是 1,直到 len(str)-1为止
- 反向搜索:最右侧第一个字符偏移量是-1,倒数第二个偏移量是-2,直到-len(str)为止
>>> a = 'abcdefg'
##正向搜索
>>> a[0]
'a'
>>> a[6]
'g'
##反向搜索
>>> a[-1]
'g'
>>> a[-7]
'a'
2、用replace替换字符串
用replace(str1,str2)函数将原字符串进行替换从而实现更改
- str1可使用str[]的形式实现更改特定位置的字符
- 若str1在原字符串中出现多次,则每个都会被替换
>>> str = "abc"
>>> str = str.replace(str[2],"nn")
>>> str
'abnn'
>>> str = str.replace("n","x")
>>> str
'mbxx'
3、字符串切片 str[::] 操作
切片(slice)操作可以让我们快速的提取子字符串。标准格式为:
str[起始偏移量 start:终止偏移量 end:步长 step]
操作和说明 | 示例 | 结果 |
---|---|---|
[:] 提取整个字符串 | “abcdef”[:] | “abcdef” |
[start:]从 start 索引开始到结尾 | “abcdef”[2:] | “cdef” |
“abcdef”[-3:] | “def” | |
[:end]从头开始到 end-1 | “abcdef”[:2] | “ab” |
[start:end]从 start 到 end-1 | “abcdef”[2:4] | “cd” |
“abcdef”[-3:-4] | “cd” | |
[start: end:step]从 start 提取到end-1,步长是 step | “abcdef”[1:5:2] | “bd” |
“abcdef”[::-1] | ‘fedcba’ |
*若切片范围超过字符串也不会报错,只会截取字符串拥有的一段
4、split()与 join()函数分割、合并字符串
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。
如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
join()函数也是基于列表来操作,其作用和 split()作用相反。
*使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。
*推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
>>> a = "a b c * c b a"
##不指定分隔符
>>> a.split()
['a', 'b', 'c', '*', 'c', 'b', 'a']
##指定分隔符
>>> a.split(" * ")
['a b c', 'c b a']
>>> n = ['a','b','c']
>>> '*'.join(n)
'a*b*c'
三、字符串常用操作汇总
1、常用查找方法
a=’’‘abcdfe_a’’
方法和使用示例 | 说明 | 结果 |
---|---|---|
a.startwith("a") | 判定是否以指定字符串开头 | True |
a.endwith("a") | 判定是否以指定字符串结尾 | True |
a.find(‘c’) | 查找第一次出现指定字符串的位置 | 2 |
a.rfind("a") | 查找最后一次出现指定字符串的位置 | 7 |
a.count("a") | 查找指定字符串出现了几次 | 2 |
a.isalnum() | 判定是否所有字符全是字母或数字 | Flase |
2、大小写转换
a = “gaoqi love programming, loveSXT”
示例 | 说明 | 结果 |
---|---|---|
a.capitalize() | 产生新的字符串,首字母大写 | ‘Gaoqi love programming, love sxt’ |
a.title() | 产生新的字符串,每个单词都首字母大写 | ‘Gaoqi Love Programming, Love Sxt’ |
a.upper() | 产生新的字符串,所有字符全转成大写 | ‘GAOQI LOVE PROGRAMMING,LOVESXT’ |
a.lower() | 产生新的字符串,所有字符全转成小写 | ‘gaoqi love programming, love sxt’ |
a.swapcase() | 产生新的,所有字母大小写转换 | ‘GAOQI LOVE PROGRAMMING, LOVEsxt’ |
3、格式排版
使用center()、ljust()、rjust()函数对字符串进行排版
>>> a="SXT"
>>> a.center(10)
' SXT '
>>> a.ljust(10)
'SXT '
>>> a.rjust(10,"*")
'*******SXT'
四、format()函数实现字符串格式化
1、format()函数基本使用方法
可以通过{索引} / {参数名},直接映射参数值,实现对字符串的格式化(常用)
##使用次序映射
>>> str = "他的名字是{0},年龄是{1}。{0}是个好小伙。"
>>> str.format('Tom',19)
他的名字是Tom,年龄是19。Tom是个好小伙。'
##使用名称映射
>>> str = "他的名字是{name},年龄是{age}。{name}是个好小伙。"
>>> str.format(name='Tom',age=19)
他的名字是Tom,年龄是19。Tom是个好小伙。'
2、填充与对齐
- ^、<、>分别是居中、左对齐、右对齐,后面带宽度
- :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("高淇","8")
'我是高淇,我喜欢数字***8****'
3、数字格式化
-
浮点数通过 {:f} 格式化
-
整数通过 {:d} 进行格式化
>>> a = "我是{0},我的存款有{1:.2f}"
>>> a.format("高淇",3888.234342)
'我是高淇,我的存款有 3888.23'
版权声明:本文为CSDN博主「闲鱼!!!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43158056/article/details/92798114