Python 之路字符串(五)
原创
林里克斯
- 1 字符串介绍
- 2 字符串的下标和切片
- 3 字符串的常见操作(内置函数)
- 3.1 获取字符串长度函数
len
- 3.2 查找具体内容获取到指定内容字符的下标
find
|index
|rfind
|rindex
- 3.3 判断
startswith
|endswith
|isalpha
|isdigit
|isalnum
|isspace
- 3.4 计算出现次数
count
- 3.5 替换内容
replace
- 3.6 切割字符串,内容分割
split
|rsplit
|splitlines
|partition
|rpartition
- 3.7 修改大小写
capitalize
|title
|upper
|lower
- 3.8 空格处理
ljust
|rjust
|center
|lstrip
|rstrip
|strip
- 3.9 字符串拼接
join
- 在计算机里,下标都是从
0
开始的。
- 3.1 获取字符串长度函数
1 字符串介绍
字符串可以理解为一段普通的文本内容,在 Python
里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。
1.1 在 Python
里,可以用以下来表示字符串
- 可以使用一对单引号 ' ';
- eg:
a = 'hello'
- eg:
- 可以是一对双引号" ";
- eg:
a = "hello"
- eg:
- 可以是一对三个单引号''' ''';
- eg:
a = '''hello'''
- eg:
- 可以是一对三个双引号""" """;
- eg:
a = """hello"""
- eg:
1.2 转义
\'
表示一个普通的单引号- eg:
a = 'I\'m good man'
- eg:
\"
表示一个普通的双引号- eg:
a = "I said: \"I am good man\""
- eg:
\n
表示一个换行
>>> print('I am \n good man')
I am
good man
\t
表示一个制表符
>>> print('I am \t good man')
I am good man
\\
表示一个普通的反斜杠
>>> print('Hello\\nWrold!')
Hello\nWrold!
- 在字符串前面加
r
/R
此字符串都表示是原生字符串
>>> print(r'I am \teacher')
I am \teacher
2 字符串的下标和切片
在计算机里,下标都是从
0
开始的。
# l i n l i k e s i
# 0 1 2 3 4 5 6 7 8
2.1 可以通过下标来获取或者修改指定位置的数据。
2.1.1取第 4 位字符
>>> word = 'linlikesi'
>>> print(word[4])
i
2.1.2 修改第 3 位字符
>>> num = [0, 1, 2, 3, 4]
>>> print(num[3])
3
#
>>> num[3] = 2 #将第3为修改为 2
>>> print(num)
[0, 1, 2, 2, 4]
#注意:字符串是不可变的数据类型,对于字符串的任何操作,都不会改变原有的字符串。
2.2 切片就是从字符串里复制一段指定的内容,生成一个新的字符串
2.2.1 切片语法
[start:end:step]
意为 开始:结束:步长(间隔)
切片包含头(start),不包含(end)
>>> word = 'linlikesi'
>>> print(word[2:5])
nli
# l i n l i k e s i
# 0 1 2 3 4 5 6 7 8
#不包含 'end' 5,所以输出不带 k,是 nli
2.2.2 只设置了 start
,会截取到最后
>>> word = 'linlikesi'
>>> print(word[2:])
nlikesi
2.2.3 值设置 end
,会从头开始截取
>>> word = 'linlikesi'
>>> print(word[:5])
linli
#任然是不包含 'end' k
2.2.4 step
为步长,理解为间隔。每隔 step-1
个取一次
>>> word = 'linlikesi'
>>> print(word[1:8:2])
ilks
#inlike [1:8] | ilks [1:8:2] 2-1 为 1 即为 隔一个取一个
2.2.5 步长默认为 1
,不能为 0
,可以为负数
>>> word = 'linlikesi'
>>> print(word[1:5:1])
inli
>>> word = 'linlikesi'
>>> print(word[8:5:-2])
ie
#step 为 负数是意为 从右往左取
>>> word = 'linlikesi'
>>> print(word[::])
linlikesi
#从左往右全取
>>> word = 'linlikesi'
>>> print(word[::-1])
isekilnil
#从右往左全取
2.2.6 如果 start
和 end
如果是负数,表示从右边数
# l i n l i k e s i
# -9 -8 -7 -6 -5 -4 -3 -2 -1
>>> word = 'linlikesi'
>>> print(word[-7:-2])
nlike
#从右到左,任然不取尾 'end'
3 字符串的常见操作(内置函数)
3.1 获取字符串长度函数 len
>>> word = 'linlikesi'
>>> print(len(word))
9
3.2 查找具体内容获取到指定内容字符的下标 find
| index
| rfind
|rindex
如果有
2
个字符,返回第一个查找到得,查到第一个后就结束。查找返回的值都是int
类型
3.2.1 find 函数
>>> word = 'linlikesi'
>>> print(word.find('k'))
5
#返回从左往右查找顺序中的第一个匹配到的,意最小
>>> word = 'linlikesi'
>>> print(word.find('l'))
0
3.2.2 index 函数
>>> word = 'linlikesi'
>>> print(word.index('k'))
5
3.2.3 find 和 index 的区别
>>> word = 'linlikesi'
>>> print(word.find('a'))
-1
# 使用 find 函数查找如果字符再字符串里不存在,会返回 -1
>>> word = 'linlikesi'
>>> print(word.index('a'))
Traceback (most recent call last):
File "g:\Code\test\python\test1.py", line 2, in <module>
print(word.index('a'))
ValueError: substring not found
#会报错,找不到所查的字符
3.2.4 rfind 函数
>>> word = 'linlikesi'
>>> print(word.rfind('l'))
3
#返回从右往左顺序遇到的第一个匹配到的,意最大
3.2.5 rindex 函数
>>> word = 'linlikesi'
>>> print(word.rfind('l'))
3
#区别于 index 和 find 一致,rfind 查不到会返回 -1,rindex 查不到会报错
3.3 判断 startswith
| endswith
| isalpha
| isdigit
|isalnum
|isspace
is
开头都是判断,结果是布尔
类型
3.3.1 startswith 判断字符串是否以指定内容开始
>>> word = 'linlikesi'
>>> print(word.startswith('l'))
True
#或这样写
>>> print('linlikesi'.startswith('l'))
True
3.3.2 endswith 判断字符串是否以指定内容结束
>>> print('linlikesi'.endswith('l'))
False
>>> print('linlikesi'.endswith('i'))
True
3.3.3 isalpha 判断字符串是否是纯字⺟
>>> print('linlikesi'.isalpha())
True
>>> print('l1i234n35l4i5kesi'.isalpha())
False
3.3.4 isdigit 判断字符串是否全是数字
>>> print('l1i234n35l4i5kesi'.isdigit())
False
>>> print('12343545'.isdigit())
True
#判断⼀个字符串是否是纯数字,只要出现⾮0~9的数字,结果就是False.
3.3.5 isalnum 判断是否由数字和字母组成
>>> print('qwe123'.isalnum())
True
>>> print('qwe'.isalnum())
True
>>> print('123'.isalnum())
True
>>> print('3.13'.isalnum())
False
#有字符和数字都可以,但不能有⾮数字和字⺟,不然返回 False
3.3.6 isspace 判断是否全部由空格组成
>>> print(' '.isspace())
True
>>> print('q 3'.isspace())
False
#必须全由空格组成,不然均返回 False
3.4 计算出现次数 count
>>> word = 'linlikesi'
>>> print(word.count('i'))
3
#计算 'i' 出现的次数
>>> print(word.count('ina'))
0
3.5 替换内容 replace
>>> word = 'hello'
>>> print(word.replace('l', 'x'))
hexxo
#替换全部匹配到的内容
>>> x = '我是大人'
>>> print(x.replace('大人', '小男孩'))
我是小男孩
>>> word = 'hello'
>>> print(word.replace('l', 'x', 1))
hexlo
#如果指定次数count,则替换不会超过 count 次。这里我指定了 count 为 1,则只替换一次
3.6 切割字符串,内容分割 split
| rsplit
| splitlines
| partition
| rpartition
3.6.1 split
可以将一个字符串切割成一个列表
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.split('-'))
['test', '1233', 'Jqiu', 'zhangshan', 'lisi']
#以 '-' 来切割 list 整个字符串
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.split('-', 2))
['test', '1233', 'Jqiu-zhangshan-lisi']
#以 '-' 来切割后面的数字代表分割几个
3.6.2 rsplit
可以将一个字符串切割成一个列表,与 split
基本一致,区别在于有数字是从右开始分割
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.rsplit('-'))
['test', '1233', 'Jqiu', 'zhangshan', 'lisi']
>>> list = 'test-1233-Jqiu-zhangshan-lisi'
>>> print(list.rsplit('-', 2))
['test-1233-Jqiu', 'zhangshan', 'lisi']
#从右边开始数起来再切割
3.6.3 splitlines
换行分割
>>> word = 'Hello \nWordld!'
>>> print(word.splitlines())
['Hello ', 'Wordld!']
#以换行符开始切割为列表
3.6.4 partition
指定一个字符串作为分隔符,分为三部分(前面 分隔符 后面)
>>> word = 'HelloWordld!'
>>> print(word.partition('W'))
('Hello', 'W', 'ordld!')
#会以 W 为分隔符将一个字符串分为三部分
>>> word = 'HelloWorWdld!'
>>> print(word.partition('W'))
('Hello', 'W', 'orWdld!')
#两个 W 得情况也只会以匹配到得第一个 W 作为分隔符
>>> word = 'HelloWordld!'
>>>print(word.partition('X'))
('HelloWordld!', '', '')
#如果指定的分隔符没有在字符串里,那会以整个字符串分割然后为空
3.6.5 rpartition
与 partition
一直,如果有两个分隔符得情况,以最后一个最右一个分隔符开始分割
>>> word = 'HelloWorWdld!'
>>> print(word.partition('W'))
('HelloWor', 'W', 'dld!')
#往右开始算,也匹配到得第一个作为分隔符
3.7 修改大小写 capitalize
| title
| upper
| lower
3.7.1 capitalize
第一个单词的首字母大写
>>> word = 'hello world!'
>>> print(word.capitalize())
Hello world!
#只将第一个单词的首字母大写,如果已大写不会更改
3.7.2 title
每个单词的首字母都大写
>>> word = 'hello world!'
>>> print(word.title())
Hello World!
3.7.3 upper
所有字母都变成小写
>>> word = 'HELLO WoRLD!'
>>> print(word.lower())
hello world!
#将所有大写字母都变成小写
3.7.4 lower
所有字母都变成小写
>>> word = 'HEeLLO World!'
>>> print(word.upper())
HEELLO WORLD!
#将所有小写字母都变成大写
3.8 空格处理 ljust
| rjust
| center
| lstrip
| rstrip
| strip
3.8.1 ljust
返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)
>>> word = 'hello'
>>> print(word.ljust(10))
hello #在右边补了五个空格,默认补空格,可以指定
>>> word = 'hello'
>>> print(word.ljust(10, '+'))
hello+++++
#指定 + 来补到指定的 10 个字符,而不是使用默认得空格
3.8.2 rjust
返回指定⻓度的字符串,并在左侧使⽤空⽩字符补全(右对⻬)。
>>> word = 'hello!'
>>> print(word.rjust(10))
hello
#在左边补了五个空格
3.8.3 center
返回指定⻓度的字符串,并在两端使⽤空⽩字符补全(居中对⻬)
>>> word = 'hello!'
>>> print(word.center(10))
hello #两端加空格,让内容居中
3.8.4 lstrip
删除左边的空白字符
>>> word = ' hello!'
>>> print(word.lstrip())
>>> print(word)
hello
hello
#将左边的空白符去掉
>>> word = '----hello-!-----'
>>> print(word.lstrip('-'))
hello-!-----
#也可以删除指定的字符
3.8.5 rstrip
删除右边的空白字符
>>> word = ' hello '
>>> print(word.rstrip())
hello
#将右边的空白符去掉
3.8.6 strip
删除两端的空白符
>>> word = ' hello '
>>> print(word.strip())
hello
#将两端的空白字符删除
3.9 字符串拼接 join
>>> word = 'a'
>>> print(word.join('hello world'))
haealalaoa awaoaralad
#把参数进⾏遍历,取出参数⾥的每⼀项,然后再在后⾯加上指定内容。空格都会识别会字符添加。最后的 d 保留不会添加
>>> word = '-'
>>> print(word.join(('hello', 'world', '!')))
hello-world-!
#可以把元祖快速的转变为字符串,并且以指定的字符分隔、
#列表也可以
>>> word = '.'
>>> print(word.join(['hello', 'world', '!']))
hello.world.!
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1475 0 2022-04-19
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
随机推荐
11-26
今日诗词 SDK 调用
01-08
Linux系统设置为中文
08-15
zabbix 5.0 配置邮箱告警
08-05
Linux 环境误删文件后恢复
09-01
Zabbix 监控 Nginx 的连接状态
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353247 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...