『Python基础-4』字符串
『Python基础-4』字符串
目录
1.什么是字符串
2.修改字符串
2.1 修改字符串大小
2.2 合并(拼接)字符串
2.3 使用乘号‘*’来实现字符串的叠加效果。
2.4 在字符串中添加空白或换行
2.5 删除字符串的空白3. 下标与切片
3.1 字符串中"下标"的使用
3.2 切片4. Python 的字符串内建函数
5. [列表]Python字符串运算符
6. [列表]python字符串格式化符号
1. 字符串
字符串:
一系列字符,用来储存和表现基于文本信息
Python 使用单引号(' ),双引号(" ),三引号(''' """) 来表示字符串,引号的开始与结束必须是相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
Unicode 字符串
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀u。
在Python3中,所有的字符串都是Unicode字符串。
2. 修改字符串
2.1 修改字符串的大小写
- Python对大小写很敏感,例如,在储存用户姓名的时候,如果用不同格式输入Lina,LINA,LiNa, 系统会认为这是三个变量,即储存三个不同的名字。
- 在实际应用中,我们无法依靠用户来提供正确的大小写,因此我们需要将字符串先转换为我们需要的格式,再存储它们
- 1.可以使用
.title()来使字符串里的每个字节的首字母大写。 - 2.可以使用
.upper()来使字符串里的每个字母都大写。 - 3.可以使
.lower()使字符串里的每个字母都小写。
name = "Liu ka"
print(name)
print (name.title())
print (name.upper())
print (name.lower())
上述代码运行结果如下:
Liu ka
Liu Ka
LIU KA
liu ka
2.2 合并(拼接)字符串: 使用加号‘+’来合并字符串。
- 一些情况下,我们可能会把多个字符串拼接在一起使用。
- 例如,姓和名存在不同的变量里,但是调用输出的时候,需要他们拼接在一起输出。
通过拼接,可使用存储在变量中的信息来创建完整的消息。
- 例如,姓和名存在不同的变量里,但是调用输出的时候,需要他们拼接在一起输出。
family_name = "李"
first_name="娜"
print(family_name,first_name)
print(family_name+first_name)
上述代码运行结果如下:
李 娜
李娜
2.3 使用乘号‘*’来实现字符串的叠加效果。
str1 = "=+="
str2 = "bang"
print(str1*4)
print(str2*3)
上述代码运行结果如下:
=+==+==+==+=
bangbangbang
「注意」不同的数据类型是不可以拼接的,系统会报错。
2.4 在字符串中添加空白或换行
在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。
- 可使用空白来组织输出, 以使其更易读。
- 要在字符串中添加制表符,可使用
字符组合/t - 要在字符串中添加换行符,可使用
字符组合/n - 可在同一个字符串中同时包含制表符和换行符。
字符串"/n/t"让Python换到下一行,并在下一行开头添加一个制表符。
print("desk的意思是'桌子'")
print("desk的意思是/t'桌子'")
print("desk的意思是/n'桌子'")
print("desk的意思是/n/t'桌子'")
上述代码运行结果如下:
desk的意思是'桌子'
desk的意思是 '桌子'
desk的意思是
'桌子'
desk的意思是
'桌子'
2.5 删除字符串的空白
有的看似一样的字符串,因为空格,会被认定为不同的数据,有时候我们需要用到.lstrip()剔除字符串开头的空白,或使用.rstrip()来剔除字符串尾端的空白,也可以使用.strip()来剔除字符串两端的空白。
「注意」这种删除只是**暂时**的,接下来再次询问这个字符串所在变量的值时,这个字符串与输入时一样,依然包含多余的空白。要**永久删除**这个字符串中的空白,必须将删除操作的结果存回到变量中
str = " 两端有空白需要删除 "
print(str)
str = " 两端有空白需要删除 "
str = str.lstrip()
print(str)
str = " 两端有空白需要删除 "
str = str.rstrip()
print(str)
str = " 两端有空白需要删除 "
str = str.strip()
print(str)
上述代码运行结果如下:
两端有空白需要删除
两端有空白需要删除
两端有空白需要删除
两端有空白需要删除
3. 下标与切片
字符串可以通过str[下标]来进行索引和切片。
(字符串、列表、元组都支持切片操作。)
所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
- 下标(索引): 就是对应的编号,默认python里面下标从0开始。
3.1 字符串中"下标"的使用:
如果有字符串:name = "My name is Mike",在内存中的实际存储如下:

(截图from<编程小白的第一本Python入门书 >)
3.2 切片
切片是指对操作的对象截取其中一部分的操作。可以看作是,在可操作对象中找出来我们想要的一小截,或者复制出来一小截我想要的长度储存在另外的地方,而不会对这个源文件改动。
切片的语法:[起始:结束:步长]
「提醒:」
- 不指定步长时,默认步长为1
- 结束位置不包含
- 不指定起始位置时,默认起始位置是0
- -1很特殊表示的最后一个元素
(1).使用切片获取指定数据,步长默认是1。
my_str = "Pycharm"
print(my_str[0:3])
运行结果:Pyc
(2).快速取前三个字符 (开始位置不指定默认是0)
my_str = "Pycharm"
result = my_str[:3]
print(result)
运行结果:Pyc
(3).快速取最后三个字符
my_str = "Pycharm"
result = my_str[-3:]
print(result)
运行结果: arm
(4).快速获取整个字符串
my_str = "Pycharm"
result = my_str[:] #my/_str[0:5]
运行结果: Pycharm
(5).负数下标
如果用正数下标完成不了的操作使用负数下标, -1很特殊表示的最后一个元素
my_str = "Pycharm"
result = my_str[-2:-5:-1] #负数下标
print(result)
result = my_str[3:0:-1] #正数下标
print(result)
result = my_str[-2:-6:-1]
print(result)
运行结果如下:
rah
hcy
rahc
(6).获取整个字符串,然后倒着取每一个值
my_str = "Pycharm"
result = my_str[::-1]
运行结果如下:mrahcyp
(7).根据切片取值,如果切片范围不对++不会崩溃++,得到空的字符串
my_str = "Pycharm"
result = my_str[3:1:1]
print("xxx:", result,":xxx")
运行结果为:xxx: :xxx
(8).根据下标取值如果对应的元素不存在++会崩溃++.
my_str = "Pycharm"
result = my_str[7]
print(result)
运行后报错:
Traceback (most recent call last):
File "/home/python/text.Python", line 2, in <module>
result = my_str[7]
IndexError: string index out of range
不要忘记: 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔.
4. Python 的字符串内建函数
Python 的字符串常用内建函数如下
| 序号 | 方法 | 描述 |
|---|---|---|
| 1 | capitalize() | 将字符串的第一个字符转换为大写 |
| 2 | center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
| 3 | count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
| 4 | bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
| 5 | encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
| 6 | endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
| 7 | expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
| 8 | find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
| 9 | index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
| 10 | isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
| 11 | isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
| 12 | isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
| 13 | islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
| 14 | isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
| 15 | isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
| 16 | istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
| 17 | isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
| 18 | join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
| 19 | len(string) | 返回字符串长度 |
| 20 | ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
| 21 | lower() | 转换字符串中所有大写字符为小写. |
| 22 | lstrip() | 截掉字符串左边的空格或指定字符。 |
| 23 | maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
| 24 | max(str) | 返回字符串 str 中最大的字母。 |
| 25 | min(str) | 返回字符串 str 中最小的字母。 |
| 26 | replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
| 27 | rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
| 28 | rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
| 29 | rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
| 30 | rstrip() | 删除字符串字符串末尾的空格. |
| 31 | split(str="", num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
| 32 | splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
| 33 | startswith(str, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
| 34 | strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
| 35 | swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
| 36 | title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
| 37 | translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
| 38 | upper() | 转换字符串中的小写字母为大写 |
| 39 | zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
| 40 | isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
常用的字符串操作示例:
4-1 find()方法
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr = 'hello world itcast and itcastcpp'
result1 = mystr.find("world")
print(result1)
result2 = mystr.find("loop")
print(result2)
上述代码运行结果如下:
6
-1
4-2.index()
跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
根据内容进行查找,返回一个下标,提示:如果没有找到则会崩溃
mystr = 'hello world itcast and itcastcpp'
result1 = mystr.index("world")
print(result1)
result2 = mystr.index("loop")
print(result2)
上述代码运行结果如下:
6
ValueError: substring not found
find 和index还可以使用下标来命令程序在字符串的某一段里查找:
result = my_str.index("l", 0, 3)
print(result)
『Python基础-4』字符串的更多相关文章
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- 『Python基础-10』字典
# 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...
- 『Python基础-9』元祖 (tuple)
『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...
- 『Python基础-8』列表
『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- 『Python基础-7』for循环 & while循环
『Python基础-7』for循环 & while循环 目录: 循环语句 for循环 while循环 循环的控制语句: break,continue,pass for...else 和 whi ...
- 『Python基础-6』if语句, if-else语句
# 『Python基础-6』if语句, if-else语句 目录: 条件测试 if语句 if-else语句 1. 条件测试 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为 ...
- 『Python基础-5』数字,运算,转换
『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...
- 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字
『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...
随机推荐
- 一次查找sqlserver死锁的经历
查找bug是程序员的家常便饭,我身边的人喜欢让用户来重现问题.当然他们也会从正式服务器上下载错误log,然后尝试分析log,不过当错误不是那种不经思考就可识别的情况,他们就会将问题推向用户,甚至怪罪程 ...
- 【Leetcode】【Easy】Reverse Linked List
题目: Reverse a singly linked list. 解题: 反转单链表,不再多介绍了. 如果会“先条件->定参数->确定不变式->验证后条件”的思维方法,一定会bug ...
- 关于微信公账号H5 API 调用的坑 BUG
页面A已经配置过,如果是单页面跳转,则页面B可以共享当前的SDK配置(至少菜单是这样的) 刷新页面,原先的菜单仍然会保持原样,只是调用SDK已经失效了,需要重新配置,重新配置后,菜单仍然会保持原样(如 ...
- sql 嵌套查询
sql 某一字段 数量大于1 SELECT * FROM ecm_goods_spec AWHERE ( SELECT count( * ) FROM ecm_goods_spec BWHERE A. ...
- 工作好搭档(一):松林 SL-B3 人体工学椅
本人从事码农这行职业,已经整整十年零九天,十年一觉如旧梦,仿佛昨天还在SARS. 2008年,我累到腰痛,脖子痛,怎么休息也不见好,去中医院检查,医生诊断,坐的太久,坐姿不对,运动少,轻度颈椎,腰肌劳 ...
- 如何在 MSBuild Target(Exec)中报告编译错误和编译警告
编译错误和编译警告 MSBuild 的 Exec 自带有错误和警告的标准格式,按照此格式输出,将被识别为编译错误和编译警告. 而格式只是简简单单的 error: 开头或者 warning: 开头.冒号 ...
- February 19 2017 Week 8 Sunday
We accept the love we think we deserve. 我们接受自己认为配得上的爱. A few months ago, I tried to date with a girl ...
- ImportError: libmysqlclient.so.20: cannot open shared object file: No such file or directory 解决办法
>>> import MySQLdbTraceback (most recent call last): File "<stdin>", line ...
- MVVM的核心:双向绑定
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致. 唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewMod ...
- 显卡 GPU 关系
https://zhidao.baidu.com/question/1238935513507031339.htmlGraphic Processing Unit,意思就是图形处理器啊,显卡的由GPU ...