字符串是 Python 中最常用的数据类型。
字符串的定义
在Python中创建字符串很简单,只要为变量分配一个值即可,如下:
my_word = "python"
my_word = 'python'
my_word = """python"""
上述三种方法都是可以的,如果定义的内容中有引号怎么办?
my_word = "'小明'" # 如果定义内容中有单引号可以使用双引号包裹
my_word = '"小明"' # 如果定义内容中有双引号可以使用单引号包裹
my_word = """小'"明""" # 三引号原则上可以包裹一切
字符串输入
在前边学习python的输入输出时,其实已经初步了解了字符串的输入输出,我们再来回顾以下一下:
注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存
userName = input('请输入账号:')
print(f"用户名为:{userName}")
password = input('请输入密码:')
print(f"密码为:{password}")
输出结果随输入不同而不同
请输入用户名:admin
用户名为: admin
请输入密码:123456
密码为: 123456
字符串输出
字符串的输出其实跟之前的章节是一样的,那边讲的更详细(传送门
weather= "晴天"
temperature= "30摄氏度"
print('---------------------华丽的分隔线-----------------')
print(f"今天的天气是{weather}")
print(f"今天的温度是{temperature}")
print('--------------------------------------------------')
结果:
---------------------华丽的分隔线-----------------
今天的天气是晴天
今天的温度是30摄氏度
------------------------------------------------
下标和切片
下标
定义字符串name = ‘python’。对于其在内存中的理解,可以参考下图
如果想取出部分字符,就可以通过下标的方式来实现
注意:下标从 0 开始
name = 'python'
print(name[0])
print(name[3])
print(name[-1])
运行结果:
p
h
n
切片
切片是指对操作的对象截取其中一部分的操作。
切片的语法:
[起始:结束:步长]
注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。
例:
name = 'python'
print(name[0:3]) # 取 下标0~2 的字符
运行结果:
pyt
name = 'python'
print(name[0:5]) # 取 下标为0~4 的字符
运行结果:
pytho
name = 'python'
print(name[3:5]) # 取 下标为3、4 的字符
运行结果:
ho
name = 'python'
print(name[2:]) # 取 下标为2开始到最后的字符
运行结果:
thon
name = 'python'
print(name[1:-1]) # 取下标为1开始到最后第2个之间的字符
运行结果:
ytho
带有步进参数的用法示例
>>> a = "abcdef"
>>> a[:3]
'abc'
>>> a[::2]
'ace'
>>> a[5:1:2]
''
>>> a[1:5:2]
'bd'
>>> a[::-2]
'fdb'
>>> a[5:1:-2]
'fd'
想一想:
给定一个字符串aStr, 请反转字符串
索引是通过下标取某一个元素
切片是通过下标去某一段元素
用法汇总
s = 'Hello World!'
print(s[4])
print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:5]) # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)
print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)
print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
# python 字符串快速逆置,上面思考题的答案
print(s[::-1]) # 从后向前,按步长为1进行取值
字符串常见操作
以下是字符串得的常见操作:
名称 | 说明 | 示例 | 结果 |
---|---|---|---|
find | 在my_word中查找字符串,如果在返回索引值,否则返回-1 my_word.find(str,start,end ) str为查找的值,start为开始,end为结束,start和end可省略 | my_word= "hello,python" my_word.find(“python”,0,20) | 6 |
rfind | 类似于 find()函数,不过是从右边开始查找 | my_word= "hello,python" my_word.rfind(“python”) | 6 |
index | 跟find()方法一样,但是查找不到会报异常 | my_word= "hello,python" my_word.index(“python”) | 6 |
rindex | 类似于 index(),不过是从右边开始 | my_word= "hello,python" my_word.rindex(“python”) | 6 |
count | 查找某个字符串在my_word中出现的次数 | my_word= "hello,python" my_word.count(“hello”) | 2 |
replace | 把my_word中的old替换成new,替换不超过count次 my_word.replace(old, new, count) | my_word= "hello,python" my_word.replace(“hello”, “你好”,1) | ‘你好,python hello,world!’ |
split | 以str为分隔符切片my_word,第二个参数表示分隔次数 my_word.split(str, 2) | my_word= “p,y,t,h,o,n" my_word.split(”,", 2) | [‘p’, ‘y’, ‘t,h,o,n’] |
capitalize | 将字符串的第一个字符大写 | my_word= "hello,python" my_word.capitalize() | ‘Hello,python’ |
title | 把字符串的每个单词首字母大写 | my_word= "hello,python" my_word.title() | ‘Hello,Python’ |
startswith | 检查字符串是否以 hello 开头, 是返回 True,否则返回 False | my_word.startswith(“hello”) | True |
endswith | 检查字符串是否以world!结束,是返回True,否则返回 False | my_word.startswith(“world!”) | True |
lower | 转换 my_word 中的大写字母为小写 | my_word= "HELLO" my_word.lower() | ‘hello’ |
upper | 转换 my_word 中的小写字母为大写 | my_word= "python" my_word.upper() | 'PYTHON |
ljust | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 | my_word= "hello" my_word.ljust(10) | 'hello ’ |
rjust | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 | my_word= "hello" my_word.rjust(10) | ’ hello’ |
center | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 | my_word= "hello,python" my_word.center(width) | ’ hello ’ |
lstrip | 删除 my_word左边的空白字符 | my_word= " python" my_word.lstrip() | ‘python’ |
rstrip | 删除 my_word字符串末尾的空白字符 | my_word = "python " my_word.rstrip() | ‘python’ |
strip | 删除my_word字符串两端的空白字符 | my_word= " python " my_word.strip() | ‘python’ |
partition | 把my_word以str分割成三部分,str前,str和str后 | my_word= “hello,python" my_word.partition(”,") | (‘hello’, ‘,’, ‘python’) |
rpartition | 类似于 partition()函数,不过是从右边开始 | my_word= "hello,python" my_word.rpartition(str) | (‘hello’, ‘,’, ‘python’) |
splitlines | 按照行分隔,返回一个包含各行作为元素的列表 | my_word= "hello\npython" my_word.splitlines() | [‘hello’, ‘python’] |
isalpha | 如果 my_word所有字符都是字母 则返回 True,否则返回 False | my_word= "python" my_word.isalpha() | True |
isdigit | 如果 my_word只包含数字则返回True,否则返回 False | my_word= "123" my_word.isdigit() | True |
isalnum | 如果 my_word所有字符都是字母或数字则返回 True,否则返回 False | my_word= "123python" my_word.isalnum() | True |
isspace | 如果 my_word 中只包含空格,则返回 True,否则返回 False | my_word= " " my_word.isspace() | True |
join | my_word.join(str) 如果str位数大于2个,则在str每两位中插入my_word | my_word= " " my_word.join(“python”) | ‘p y t h o n’ |