在Python中字符串的表达方式有四种

  • 一对单引号
  • 一对双引号
  • 一对三个单引号
  • 一对三个双引号
  1. a = 'abc'
  2. b= "abc"
  3. c = '''abc'''
  4. d = """abc"""
  5. print(type(a)) # <class 'str'>
  6. print(type(b)) # <class 'str'>
  7. print(type(c)) # <class 'str'>
  8. print(type(d)) # <class 'str'>

单双引号混合使用

  1. a = "LiMing say 'nice to meet you'"

同样也可以通过转义的方式不用在里面写双引号

  1. a = "LiMing say \"nice to meet you\""
  2. print(a)

总结就是需要外面用了双引号,里面需要引用的语句可以用单引号括起来,反之亦然。

通常情况根据个人喜好,基本都是使用单引号或者双引号。有些特殊情况,比如需要表示多行时,可以选择三个单(双)引号,并且无序用\进行转移,可直接使用单引号和双引号。

  1. a = '''
  2. My Name is 阿亮,
  3. Let's say 'Hello'
  4. '''
  5. print(a)

字符串的下标和切换

下标:字符串是一个个字符拼接而成,下标可以理解为每个字符的编号,从0开始依次类推。

作用:通过下标去操作字符串中的元素

  1. # H的下标为0, e的下标为1 ..依次类推
  2. a = 'HelloWorld'
  3. # 获取字符串a中下标为4的元素
  4. print(a[4]) # o 下标为4的元素为o

修改字符串中的元素是不是可以直接赋值呢? 例如:

  1. a = 'HelloWorld'
  2. a[4] = 'k'
  3. print(a)

上面的代码运行之后发现报错。

  1. TypeError: 'str' object does not support item assignment

原因是因为: 字符串一旦创建之后,里面的元素是不可以修改的。

所以字符串是无法直接进行修改的。

字符串运算

字符串运算中用到了+*><!== 等逻辑运算符。

字符串的相加操作,也可以理解为拼接操作。例如:

  1. a = 'Hello' + ' World'
  2. print(a) # Hello World
  3. # 也可以写成
  4. a = 'Hello' ' World'
  5. print(a) # Hello World

字符串的乘法操作, 可以理解为克隆操作,字符串只能与整数(n)想乘,代表克隆n个字符串。

  1. a = 'a'
  2. print(a * 2) # aa
  3. b = '-'
  4. print(b * 10) # ----------

切片

字符串的切片也称为字符串截取。 所有操作都是通过字符串的下标进行操作的。

用法:字符串[开始索引(start):结束索引(end):步长(step)(默认1)]

步长(step):每隔(step-1)个取一个元素,当step为负数时,代表从右向左取元素,

  1. a = 'abcdefghijklmn'
  2. # 从下标1开始 到4结束 进行切片 (包括1,不包括4,即左开又闭)
  3. print(a[1:4]) # bcd
  4. print(a[1:8]) # bcdefgh
  5. print(a[1:8:2])# 步长为2 结果:bdfh
  6. # 当补偿为负数时,代表逆向截取。 初始从坐标8开始,每隔一个元素取一个值,到下标为1时结束
  7. print(a[8:1:-2]) # igec

字符串的常用操作

这里以代码+注释的方式,展示几个常用的字符串操作。

  1. a = ' Hello World '
  2. # 获取字符串的长度
  3. print(len(a)) # 13
  4. # 删除字符串两边的空格
  5. print(a.strip()) # Hello World
  6. # 删除左边的空格
  7. print(a.lstrip()) # Hello World (只删除左边的空格)
  8. # 删除字符串右边的空格
  9. print(a.rstrip()) # Hello World
  10. # 通过指定连接符 链接字符串
  11. lst = ['LiMing', 'Tom']
  12. print('***'.join(lst)) # LiMing***Tom
  13. # 首字母大写
  14. m = 'hello world'
  15. print(m.capitalize()) # Hello world
  16. # 返回标题化字符串,即每个单词首字母大写
  17. print(m.title()) # Hello World
  18. # 打印输出字符,将字符串放在中间,
  19. # center(width, fillchar) width: 字符串的总长度, fillchar:填充字符
  20. print(a.center(20, '*')) # *** Hello World ****
  21. # 是否以xxx开头
  22. n = 'Hello'
  23. print(n.startswith('H')) # True
  24. # 是否以xxx结尾
  25. print(n.endswith('o')) # True
  26. # 字符串是全纯英文字符
  27. print(a.isalpha()) # False , 因为字符串a中 ' Hello World ' 有空格,因此返回False
  28. print('HelloWorld'.isalpha()) #True
  29. # 判断字符串中是否全部为数字或者英文
  30. print('Hello2World'.isalnum()) # True
  31. print('123'.isalnum()) # True
  32. print('abc&11'.isalnum()) # False
  33. # 判断是否为整数
  34. print('123'.isdigit()) # True
  35. print('1.23'.isdigit()) # False
  36. # 判断字符是否全为小写
  37. print('abc'.islower()) # True
  38. # 判断字符是否全为大写
  39. print('Abc'.isupper()) # False
  40. print('ABC'.isupper()) # True
  41. # 字符串小写转大写
  42. print('abc'.upper()) # ABC
  43. # 字符串大写转小写
  44. print('ABC'.lower()) # abc
  45. # 字符串的替换
  46. b = 'aabbcc'.replace('a', 'm')
  47. print(b) # mmbbcc
  48. # 1 代表替换的个数
  49. b = 'aabbcc'.replace('a', 'm', 1)
  50. print(b) # mabbcc
  51. # split 字符串切割,默认空格切割
  52. print('aa bb cc'.split()) # ['aa', 'bb', 'cc']
  53. print('ab,cd,ef'.split(',')) # ['ab', 'cd', 'ef']
  54. # 字符串换行分割
  55. a = """
  56. My Name is 'Python极客专栏',
  57. 欢迎关注
  58. """
  59. print(a.splitlines()) # ['', " My Name is 'Python极客专栏',", ' 欢迎关注', ' ']

字符串的查找

字符串查找常用的方法用indexfind

两者功能相似,区别在于find查找不到元素时返回 -1, 不会影响程序运行,而index则会抛出异常。

  1. a = 'abcdef'
  2. # 查找到元素返回对应的下标
  3. print(a.find('c')) # 2
  4. print(a.find('h')) # -1
  5. print(a.index('c')) # 2
  6. print(a.index('h')) # 抛出异常,ValueError: substring not found
rfind: 类似于find()函数,不过是从右边开始查找;返回字符串最后一次出现的位置,如果没有匹配项则返回-1 。rindex 同理
  1. a = 'acmncd'
  2. # 从右边开始计算,返回第一个匹配到的下标
  3. print(a.rfind('c')) # 4
  4. print(a.rindex('c')) # 4

字符串的格式化

  1. name = 'Python极客专栏'
  2. # %s 用于输出字符串
  3. print('我的公众号是: %s' % name)
  4. age = 18
  5. # %d 用于输出十进制数字
  6. print('我的年龄是:%d' % age)
  7. money = 1.23
  8. # %f 浮点数,默认显示小数点后6位
  9. print('我身上有:%f 元' % money )
  10. # 指定小数点后的位数
  11. print('我身上有:%.2f 元' % money )
format操作

除了使用 % 进行格式化,也可以使用format

  1. print('{} {}'.format('Hello', 'World')) # Hello World
  2. print('{0} {1}'.format('Hello', 'World')) # Hello World
  3. print('公众号{name}, 分享{code} 技术'.format(name='Python极客专栏', code='Python')) # 公众号Python极客专栏, 分享Python 技术
  4. print('{1}, {0}, {1}'.format('A', 'B')) #B, A, B
  5. print('今年是 {}年.'.format(2020)) # 今年是 2020年.

文末福利,史上最全Python资料汇总(长期更新)。隔壁小孩都馋哭了 --- 点击领取

超详细!盘点Python中字符串的常用操作的更多相关文章

  1. python中字符串(str)常用操作总结

    # 字符串的常用操作方法 (都是形成新的字符串,与原字符串没有关系.) 1.字符串的基本操作之切片 s = 'python hello word' # 取首不取尾,取尾要+1 # 切片取出来的字符串与 ...

  2. python之字符串的常用操作(转)

    1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + str2) >> ...

  3. python中字符串的常用(部分)处理方法

    myStr = "hello world itcast and hahaitcastcpp" 方法的查询方法: help(myStr.replace) myStr.find(&qu ...

  4. python中字符串的常见操作

    demo:mystr = 'hello python' 1.find:mystr.find(str, start=0, end=len(mystr)),检测字符串中是否有要查询的字符,如果有返回开始的 ...

  5. python中字典数据类型常用操作

    创建字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: ...

  6. 处理PHP中字符串的常用操作及函数

    1. 确定一个字符串的长度 这是最为常见和基础的例子,对于确定一个字符串的长度,我们应该使用strlen()函数,比如要获取下面字符串$text 的长度: $text = "sunny da ...

  7. Python中set集合常用操作

    功能 Python符号 Python方法 备注 交集 & intersection, intersection_update &:取两者交集>>> set3 = se ...

  8. Python中列表的常用操作

    只整理重要常用的操作: append():尾部追加元素,参数只能为一个. extend():用列表扩展列表,参数为列表. insert():在指定位置插入元素,第一个参数为插入位置,第二个为参数为插入 ...

  9. python中列表的常用操作增删改查

    1. 列表的概念,列表是一种存储大量数据的存储模型. 2. 列表的特点,列表具有索引的概念,可以通过索引操作列表中的数据.列表中的数据可以进行添加.删除.修改.查询等操作. 3. 列表的基本语法 创建 ...

随机推荐

  1. C#LeetCode刷题之#169-求众数(Majority Element)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4048 访问. 给定一个大小为 n 的数组,找到其中的众数.众数是 ...

  2. Flutter 容器(5) - SizedBox

    SizedBox: 两种用法:一是可用来设置两个widget之间的间距,二是可以用来限制子组件的大小. import 'package:flutter/material.dart'; class Au ...

  3. 解Bug之路-dubbo流量上线时的非平滑问题

    前言 笔者最近解决了一个困扰了业务系统很久的问题.这个问题只在发布时出现,每次只影响一两次调用,相较于其它的问题来说,这个问题有点不够受重视.由于种种原因,使得这个问题到了业务必须解决的程度,于是就到 ...

  4. Android 内部存储读写介绍

    内部存储读写 内容介绍 Android系统允许应用程序创建仅能够自身访问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data//files目录中 Android系统不仅支 ...

  5. ansibleAPI怎么做异步

    在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值 [root@master ansible]# ansible node1 -B -P -m yum ...

  6. jupyter 安装 卸载 包

    # 安装 !pip install 库名 # 卸载 !pip uninstall 库名 -y

  7. sudo 提权漏洞(CVE-2019-14287)复现

    (该文参考网络他人资料,仅为学习,不许用于非法用途) 一.环境 1.sudo版本小于1.8.28的Linux系统 2.sudo 是Linux系统命令,让普通账号以root身份去执行某些命令,比如:安装 ...

  8. Jmeter系列(46)- Jmeter 中有哪些常用的函数

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 Jmeter 提供了很多函数 但 ...

  9. .NET ORM 导航属性【到底】可以解决什么问题?

    写在开头 从最早期入门时的单表操作, 到后来接触了 left join.right join.inner join 查询, 因为经费有限,需要不断在多表查询中折腾解决实际需求,不知道是否有过这样的经历 ...

  10. [NOI2020]美食家 题解

    题意分析 给出一个带权有向图,要求从节点 $1$ 出发,经过恰好 $T$ 的边权和,回到节点 $1$ ,求可经过的最大点权和.特别地,经过的边权和达到部分特殊数时,会有某个点的点权发生改变. 思路分析 ...