简述

字符串(String),是由零个或多个字符组成的有限序列,在 Python 中表示文本的数据类型。

字符只是一个符号,例如:字母(A-Z)、数字(0-9)、特殊符号(~!@#¥%…)等。

| 版权声明:一去、二三里,未经博主允许不得转载。

字符串

在 Python 中,字符串由内置的 str 类型定义。

>>> s = 'Hello, Python!'
>>> type(s)
<class 'str'>

可以使用单引号('')或双引号("")来表示字符串。

PS: 单引号比双引号更常用。

>>> s = 'Hello'  # 单引号
>>> s
'Hello'
>>>
>>> s = "Hello"  # 双引号
>>> s
'Hello'

字符串可以跨多行,但是每行末尾必须添加反斜杠(\)以转义换行符。

>>> s = 'Hello \
... World'
>>> s
'Hello World'

三重引号('''""")内的字符串可以跨多个文本行。

# 三重单引号
>>> s = '''Hello
... Python'''
>>> s
'Hello\nPython'
>>>
# 三重双引号
>>> s = """
... Hello
... Python
... """
>>> s
'\nHello\nPython\n'

注意: 三重引号通常用于表示多行字符串和 docstring。

访问字符串

索引

字符串是字符的有序序列,可以通过其位置来获取具体的字符。在 Python 中,位置有一个优雅的称呼 - 索引(index)。

索引分为两种形式:

  • 正向索引(从左到右):索引从 0 开始,直到 length - 1,可以很方便地访问字符串开头附近的字符。
  • 反向索引(从右到左):索引从 -1 开始,直到 -length,可以很方便地访问字符串末尾附近的字符。

其中,length 为字符串的长度。

为了更清晰以上概念,来看一个直观地索引图。假设,有一个字符串 s = "Hello"

使用 [index] 的语法形式来访问指定索引处的字符:

>>> s = 'Hello'
>>>
>>> s[0]  # 第一个字符
'H'
>>>
>>> s[4]  # 最后一个字符
'o'

负索引(反向索引)从字符串的末尾开始计数,也可以起到同样的效果:

>>> s[-5]  # 第一个字符
'H'
>>>
>>> s[-1]  # 最后一个字符
'o'

试图访问索引范围外的字符会引发 IndexError。索引必须是一个整数,不能使用 float 或其他类型,这将引发 TypeError。

# 索引必须在范围内
>>> s[10]
...
IndexError: string index out of range# 索引必须是整数
>>> s[1.5]
...
TypeError: string indices must be integers

切片

切片操作(slice)是一种很方便的方法,用于引用序列(通常是字符串和列表)的子部分。

切片操作的语法格式:

[start:stop:step]

  • start(开始索引):第一个索引的值是 0,最后一个是 -1。
  • stop(结束索引):切片操作符将取到该索引为止,但不包含该索引的值。
  • step(步长):默认是 1,也就是说,一个接一个切取。如果为 2,则表示隔一取一。步长为正数时,表示从左向右取;如果为负数,表示从右向左取;步长不能为 0。

通过上图,其实也可以很直观地看到切片。

>>> s = 'Hello'
>>>
>>> s[1:4]  # 第 2 个到第 4 个字符
'ell'
>>>
>>> s[1:]  # 第 2 个到最后一个字符(将索引默认设置为字符串的开始或结束)
'ello'
>>>
>>> s[1:100]  # 索引太大,被截断至字符串长度处
'ello'
>>>
>>> s[:]  # 所有字符(从开始到结束)
'Hello'

PS: s[:] 形式会忽略开始和结束索引,总是获得一个完整的副本。是 pythonic 使用的方式,用于复制序列(例如:字符串或列表)。

和提取字符类似,切片操作也可以使用反向索引:

>>> s[-4:-1]  # 第 2 个到第 4 个字符
'ell'
>>>
>>> s[:-3]  # 开始到第 2 个字符
'He'
>>>
>>> s[-3:]  # 第 3 个到最后一个字符
'llo'

对于任何索引 n,s[:n] + s[n:] == s 是一个整齐的切片,甚至对于负数或超出界限的值也是如此。换一种说法,s[:n]s[n:] 总是将字符串分成两部分,来保存所有的字符。

更改或删除字符串

字符串是不可变的,也就是说,一旦分配了字符串的元素就不能被更改。

但是,可以将不同的字符串重新分配给同一个变量。

>>> s = 'Hello'
>>> s[2] = 'a'
...
TypeError: 'str' object does not support item assignment
>>>
>>> s = 'Python'
>>> s
'Python'

无法从字符串中删除字符,但是可以使用关键字 del 完全删除字符串。

>>> del s[2]
...
TypeError: 'str' object doesn't support item deletion
>>>
>>> del s
>>> s
...
NameError: name 's' is not defined

基本操作

字符串能成为 Python 中最常用的数据类型之一,很大原因是因为它使用非常方便,提供了大量的字符串操作,例如:连接字符串、遍历字符串…

所有的序列(例如:字符串、列表)都可以进行以下基本操作:

  • +:连接两个序列
  • *:重复序列元素
  • in:判断元素是否在序列中
  • min():返回最小值
  • max():返回最大值
  • len():返回序列长度
  • enumerate():返回一个枚举对象,包含字符串中所有元素的索引和值(作为一对)

连接字符串

连接是指将多个字符串合并为一个单独的字符串。

>>> s1 = "Hello,"
>>> s2 = " World!"
>>>
>>> s = s1 + s2  # 连接字符串
>>> s
'Hello, World!'

如果想在不同的行中连接字符串,可以使用括号。

>>> # 两个字符串一起
>>> 'Hello,' ' World!'
'Hello, World!'
>>>
>>> # 使用括号
>>> s = ('Hello,'
... ' World!')
>>> s
'Hello, World!'

操作符 + 不会将数字或其他类型自动转换为字符串形式,需要通过 str() 函数将值转换为字符串形式,以便它们可以与其他字符串组合。

>>> age = 18
>>>
>>> s = 'My age is ' + age
...
TypeError: Can't convert 'int' object to str implicitly
>>>
>>> s = 'My age is ' + str(age)
>>> s
'My age is 18'

重复字符串

操作符 * 用于以指定的次数来重复字符串。有时很好用,比如打印一条华丽的分割线:

>>> s = 'Hello'
>>>
>>> s * 3  # 重复字符串 3 次
'HelloHelloHello'
>>>
>>> print('-' * 20)  # 无需输入很多 -
--------------------

最大值/最小值

在一个字符串中,每个字符在计算机中都有对应的 ASCII 码。min() 和 max() 就是根据对应的 ASCII 码进行比较的,从而获取最小值和最大值对应的字符。

Python 提供了两个内置函数 ord() 和 chr(),用于字符和 ASCII 码之间的转换。

>>> ord('H')  # 字符转 ASCII 码
72
>>>
>>> chr(72)  # ASCII 码转字符
'H'

别犹豫啦,开始比较吧!

>>> s = 'Hello'
>>>
>>> min(s)  # 最小字符
'H'
>>>
>>> max(s)  # 最大字符
'o'

字符串成员测试

使用关键字 in,可以测试字符串中是否包含指定的子串。

>>> 't' in 'python'
True
>>>
>>> 'th' not in 'python'
False

字符串长度

要获取一个字符串的长度,可以使用内置函数 len():

>>> s = 'Hello'
>>>
>>> len(s)  # 字符数
5

迭代字符串

使用 for 循环,可以遍历一个字符串。

# 查找字符串中 l 的数量
count = 0
for letter in 'Hello':if (letter == 'l'):count += 1
print(count, 'letters found')

还可使用 enumerate(),它会返回一个枚举对象,包含字符串中所有元素的索引和值(作为一对),这对于迭代很有用。

s = 'Hello'
e = list(enumerate(s))
print(e)for index, item in e:print(index, item)

运行程序,输出如下:

[(0, ‘H’), (1, ‘e’), (2, ‘l’), (3, ‘l’), (4, ‘o’)]
0 H
1 e
2 l
3 l
4 o

字符串的方法

字符串有许多方法,可以通过 dir() 来查看方法列表:

>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

这么多,当然不需要逐一介绍了,重在掌握如何使用(授人以鱼不如授人以渔),能做到随用随查就好。

利用 help() 函数,可以查看函数或模块用途的详细说明:

>>> help(str.lower)
Help on method_descriptor:lower(...)S.lower() -> strReturn a copy of the string S converted to lowercase.
(END)

注意: 要终止查询,使用 q 键。

按照说明,可以在交互模式下进行实验,这里仅列举一些比较常用的方法。

>>> s = 'Hello'
>>>
>>> s.lower()  # 转换所有字符为小写
'hello'
>>>
>>> s.upper()  # 转换所有字符为大写
'HELLO'
>>>
>>> s.find('ll')  # 返回子串的开始索引
2
>>>
>>> s.endswith('llo')  # 检查字符串是否以指定的子串结束
True
>>>
>>> s.isdigit()  # 检查字符串是否只包含数字
False
>>>
>>> s.replace('ll', 'r')  # 替换字符串中的子串
'Hero'
>>>
>>> s = 'I like Python'
>>>
>>> s.split()  # 分割字符串
['I', 'like', 'Python']

Python 字符串相关推荐

  1. python 字符串格式化是打印不同类型更简单一些

    Python 支持格式化字符串的输出 与 C 中 sprintf 函数一样的语法 下面写3中不同类型的数据合在一起打印 name = "张三丰" height = 1.88 wei ...

  2. Python——字符串大小写转化

    python字符串得一些用法: 1.输入一个字符串,将其单词首字母由小写变成大写 当所有字母都为大写时,结果也是将首字母变成大写,其余仍然是小写 2.将小写字母转化为大写字母,大写字母仍然转化为大写字 ...

  3. 真香!精心整理了 100+Python 字符串常用操作

    来源丨萝卜大杂烩 作者丨周萝卜 字符串作为平时使用最多的数据类型,其常用的操作我们还是很有必要熟记于心的,本文整理了多种字符串的操作的案例,还是非常用心,记得点赞收藏~ 字符串切片操作 test = ...

  4. Python字符串方法:字符串拼接、截取、转数字

    这节课程我们主要讲有关Python字符串的用法,包括字符串的拼接.字符串怎么转数字.字符串的格式化.字符串函数等内容. 1.Python字符串的拼接 拼接方式很简单-我们可以用"+" ...

  5. Python字符串居然可以这样玩 到底怎么做到的 年薪50w程序员揭晓

    Python如何比较字符串?由于字符串是Python中最常用的数据类型,所以我们考虑简化字符串比较操作.在本教程中,我们将介绍如何创建字符串对象,如何使用引号,最重要的是在Python中比较字符串的七 ...

  6. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  7. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例

    爬一个网页时,要保存的数据都没有encode,就导致保存下来的中文都变成unicode了... 那么,怎么把一个表示字符串的unicode还原成unicode呢? 函数eval(expression) ...

  8. 如何检查一个Python字符串是否只包含数字?

    如何检查一个Python字符串是否只包含数字? python String类中有一个名为isdigit()的方法,如果字符串中所有字符都是数字且至少有一个字符,则返回true,否则返回false. p ...

  9. python 字符串按指定分隔符分割

    python 字符串按指定分隔符分割 def str_split(str1,str2):"""# 字符串分割:param str1:字符串:param str2:分隔符: ...

  10. python 案例串接_来撸串,一个案例轻松认识Python 字符串——翻转拼接游戏

    键盘输入一个字符串和数字,从头部或尾部截取指定数量的字符串,然后将其翻转拼接.将字符串在第n个字符处翻转拼接,例如输入,python,2;输出头部翻转:thonpy;尾部翻转:onpyth. 字符串是 ...

最新文章

  1. 由浅入深剖析.htaccess
  2. 移动的验证码安全问题告诉移动网站后......,1860意指一般人不会这样做.
  3. Intel汇编语言程序设计学习-第六章 条件处理-上
  4. (天国之扉文章抢救) 1/10/2003 总结?总结!
  5. 如何判断ios设备中是否安装了某款应用
  6. JAVA框架Struts2 结果页配置
  7. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第三十集
  8. 教你培养成功的必备因素——强烈的企图心
  9. 红黑树为什么可以确保没有一条路径会比其他路径长出两倍
  10. python监控linux运行程序_如何在linux/tcl/python中监控正在打开或启动的应用程序?...
  11. 已知自然常数e的泰勒展开式是_泰勒公式:微分学的顶峰 (数学分析 · 导数的应用 (2))...
  12. 程序员的一种境界【转的】
  13. 利用组策略进行软件分发
  14. 不格式化 删除内存卡上的顽固文件(PC套件操作失败 文件无法删除)
  15. Echart资源网站
  16. HDU-5064-Find Sequence(DP)
  17. KVM虚拟机扩容硬盘
  18. 苹果6标准模式和放大模式具体有什么差别?
  19. 中国象棋java大作业doc_《java语言程序设计》课程设计-中国象棋对弈系统(源码).doc...
  20. 汽车转向前后轮轨迹matlab程序,车前进后退方向的口诀,动画图解车前后轮转弯轨迹...

热门文章

  1. 软件测试工程师的职业规划
  2. 路由器设置显示服务器拒绝访问,路由器设置服务器拒绝访问
  3. php 送货单管理系统,销售送货单管理系统下载
  4. c语言中e的n次方怎么打,C语言中N次方怎么打
  5. vivado保存波形图_FPGA开发:Vivado时序波形图保存和读取
  6. zookeeper详解
  7. 鸭子-策略模式(Strategy)
  8. python中怎么查看二进制转换的数据_python二进制数据
  9. 抖音多闪数次声明被打脸 法院正式裁定抖音违规
  10. MobileNet网络系列论文及模型V1-V2-V3