微信公众号:码农充电站pro

个人主页:https://codeshellme.github.io

过早的优化代码是罪恶之源。

—— Donald Knuth

目录

无论哪种编程语言,字符串处理都是最重要的内容之一。当然,Python 也不例外。

1,Python 字符串

这节内容中,我们已经知道了Python 字符串是用以下引号引住的一串字符:

  • 单引号''
  • 双引号""
  • 三单引号'''
  • 三双引号"""

Python3 中的字符串类型统一采用Unicode 编码,因此支持多种语言。

我们这里介绍的字符串类型,指的是<class 'str'>

  1. >>> type('中国')
  2. <class 'str'>
  3. >>> type('abc')
  4. <class 'str'>

2,常用转义字符

在用到某些特殊字符时,需要用到转义字符----反斜杠\

下表是Python 中的一些常用转义字符:

转义字符 含义
\\ 反斜杠
\' 单引号
\" 双引号
\n 换行
\r 回车
\t 横向制表符

3,字符串长度

使用len() 函数可以获取字符串的长度

  1. >>> len('Hello') # 一个英文字符的长度是 1
  2. 5
  3. >>> len('Hi')
  4. 2
  5. >>> len('Python')
  6. 6
  7. >>> len('中国') # 一个中文字符的长度是 1
  8. 2

4,截取字符串

在Python 中可以用中括号[]来截取字符串内容。

获取单个字符

通过下标获取字符串中的单个字符,语法格式如下:

  1. s[n]

其中s 是一个字符串变量,n 为下标,是一个整数,其取值范围为:

  1. -len(s)<=n<=len(s)-1
  • -len(s)<=n<0:从右往左数,取第n 个字符
  • 0<=n<=len(s)-1:从左往右数,取第n+1 个字符

图解:

示例:

  1. >>> s = 'Hello' # 字符换变量 s
  2. >>> len(s) # s 的长度
  3. 5 # 下标n 的范围为 -5<=n<=4
  4. >>> s[-6] # 超出取值范围,报错
  5. Traceback (most recent call last):
  6. File "<stdin>", line 1, in <module>
  7. IndexError: string index out of range
  8. >>> s[-5] # 取倒数第5 个字符
  9. 'H'
  10. >>> s[-1] # 取倒数第1 个字符
  11. 'o'
  12. >>> s[0] # 取第1 个字符
  13. 'H'
  14. >>> s[4] # 取最后一个字符
  15. 'o'
  16. >>> s[5] # 超出取值范围,报错
  17. Traceback (most recent call last):
  18. File "<stdin>", line 1, in <module>
  19. IndexError: string index out of range

获取部分字符

获取部分字符串的语法格式如下:

  1. s[m:n]

其中s 是一个字符串变量,mn 可以是任意的整数。

s[m:n] 代表的含义是:获取字符串s 下标mn 之间的子串,子串的值包含s[m],而不包含s[n],即遵循左闭右开原则。

图解:

示例:

  1. >>> s = 'Hello'
  2. >>> s[-5:1]
  3. 'H'
  4. >>> s[-7:2]
  5. 'He'
  6. >>> s[-3:2]
  7. ''
  8. >>> s[0:3]
  9. 'Hel'
  10. >>> s[3:1]
  11. ''
  12. >>> s[3:-1]
  13. 'l'

m 和 n 都可不写

  • 如果不写m,代表从最左边开始
  • 如果不写n,代表到最右边结束

示例:

  1. >>> s = 'Hello'
  2. >>> s[:] # m 和 n 都不写代表整个字符串
  3. 'Hello'
  4. >>> s[:3] # 不写 m,代表从最左边开始,直到下标 n
  5. 'Hel'
  6. >>> s[2:] # 不写 n,代表从下标 m开始,直到最右边
  7. 'llo'

5,字符串连接

加号+ 运算符可以连接两个字符串

  1. >>> 'abc' + '123'
  2. 'abc123'
  3. >>> 'Hi' + '你好'
  4. 'Hi你好'

6,重复字符串

一个字符串 乘一个整数n,相当于n 个字符串相连:

  1. >>> 'a' * 5
  2. 'aaaaa'
  3. >>> 'abc' * 3
  4. 'abcabcabc'
  5. >>> '你好' * 2
  6. '你好你好'

7,字符串包含

运算符in

in 在Python 中是一个运算符,可用于判断一个子串是否包含在一个字符串中:

  1. >>> 'a' in 'abc'
  2. True
  3. >>> 'ab' in 'abc'
  4. True
  5. >>> 'ad' in 'abc'
  6. False

运算符not in

not inin 的反义,用于判断一个子串是否不包含在一个字符串中:

  1. >>> 'a' not in 'abc'
  2. False
  3. >>> 'ab' not in 'abc'
  4. False
  5. >>> 'ad' not in 'abc'
  6. True

8,字符串格式化

Python 字符串支持多种数据类型的格式化,字符串格式化符号见下表:

符号 含义
%c 格式化字符
%s 格式化字符串
%d 格式化整数
%o 格式化八进制数
%x/%X 格式化十六进制数,后者为大写
%f 格式化浮点数
%e 用科学计数法格式化浮点数

示例:

  1. >>> '%c' % 'a' # 格式化字符
  2. 'a'
  3. >>> '%c' % 'B' # 格式化字符
  4. 'B'
  5. >>> '%s' % '中国' # 格式化字符串
  6. '中国'
  7. >>> '%s' % 'abc' # 格式化字符串
  8. 'abc'
  9. >>> '%s' % 123 # 数字类型也可格式化为字符串
  10. '123'
  11. >>> '%d' % 12345 # 格式化数字
  12. '12345'
  13. >>> '%o' % 8 # 格式化八进制数字
  14. '10'
  15. >>> '%o' % 9 # 格式化八进制数字
  16. '11'
  17. >>> '%x' % 10 # 格式化十六进制数字,小写
  18. 'a'
  19. >>> '%x' % 11 # 格式化十六进制数字,小写
  20. 'b'
  21. >>> '%X' % 10 # 格式化十六进制数字,大写
  22. 'A'
  23. >>> '%X' % 11 # 格式化十六进制数字,大写
  24. 'B'
  25. >>> '%f' % 123.123 # 格式化浮点数
  26. '123.123000'
  27. >>> '%e' % 123.123 # 科学计数法格式化浮点数
  28. '1.231230e+02'

宽度与小数点位数

每种格式化符号之前都可以添加m.n

  • mn 都是正整数
  • m 表示格式化的宽度,对于浮点数无效
  • n 表示小数点后的位数,只对浮点数有效

示例:

  1. >>> '%4s' % 'abc' # 总宽度为 4
  2. ' abc' # 'abc' 之前有 1 个空格
  3. >>> '%5s' % 'abc' # 总宽度为 5
  4. ' abc' # 'abc' 之前有 2 个空格
  5. >>> '%5d' % 100 # 总宽度为 5
  6. ' 100' # 100 之前有 2 个空格
  7. >>> '%.5d' % 100 # 总宽度为 5,注意 5 之前有个点
  8. '00100' # 宽度不够用 0 补齐,所以 100 之前有 2 个 0
  9. >>> '%.2f' % 100.123 # 小数点后保留 2 位,多余位数舍弃
  10. '100.12'
  11. >>> '%.5f' % 100.123 # 小数点后保留 5 位,位数不够,用 0 补齐
  12. '100.12300'

左对齐与右对齐

默认情况下,宽度 不够时,会在左边加空格,这是右对齐

  1. >>> '%5s' % 'abc' # 宽度为 5,不够用空格补齐,右对齐
  2. ' abc'

可在数字5 之前添加一个负号-宽度 不够时,会在右边加空格,这是左对齐

  1. >>> '%-5s' % 'abc' # 宽度为 5,不够用空格补齐,左对齐
  2. 'abc '

(完。)


推荐阅读:

Python 简明教程 --- 2,第一个Python 程序

Python 简明教程 --- 3,Python 基础概念

Python 简明教程 --- 4,Python 变量与基本数据类型

Python 简明教程 --- 5,Python 表达式与运算符

Python 简明教程 --- 6,Python 控制流


欢迎关注作者公众号,获取更多技术干货。

Python 简明教程 --- 7,Python 字符串的更多相关文章

  1. Python 简明教程 --- 8,Python 字符串函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- St ...

  2. 【笔记】Python简明教程

    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...

  3. python简明教程

    Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介   pylogo. ...

  4. Python 简明教程 --- 3,Python 基础概念

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...

  5. Python 简明教程 --- 2,第一个Python 程序

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...

  6. Python 简明教程 --- 13,Python 集合

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...

  7. Python 简明教程 --- 14,Python 数据结构进阶

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...

  8. Python 简明教程 --- 15,Python 函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误. -- Edsger Dijkstra 目录 本节我 ...

  9. Python 简明教程 --- 17,Python 模块与包

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 正确的判断来源于经验,然而经验来源于错误的判断. -- Fred Brooks 目录 我们已经知道函 ...

随机推荐

  1. 10 个提高效率的 Linux 命令别名

    在 Linux 环境下工作的工程师,一定会对那些繁琐的指令和参数命令行印象深刻吧.而且,可怕的不是繁琐,而是需要大量重复输入这些繁琐的命令. 在 Linux 下我们有个别名命令 alias ,可以将那 ...

  2. 50个SQL语句(MySQL版) 问题九

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  3. jQuery-简单理解

    1.概念 jQuery是js的一个类库,主要封装的是js中DOM操作部分,使用和原生js一样 2.代码展示 HTML部分 封装原理 test测试 JS部分 //声明对象 var bjsxt = {}; ...

  4. Java实现 蓝桥杯 算法训练 画图(暴力)

    试题 算法训练 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩 ...

  5. Java实现 LeetCode 661 图片平滑器(暴力)

    661. 图片平滑器 包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元 ...

  6. Java实现 蓝桥杯VIP 算法训练 王后传说

    问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

  7. Java实现 蓝桥杯 算法提高 奥运会开幕式

    试题 算法提高 奥运会开幕式 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办?班长 ...

  8. Charles(青花瓷/花瓶)的基本使用

    前言 Charles 其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.其次该软件是用 Java 写的,能够在 Windows,Mac,Linux 上使用. ...

  9. 转载:windows下安装mac虚拟机(Vmvare+mac)

    体验Mac的高效与思想,每个技术人都应该去了解和体验,本文转载自网络,使用Vmvare,虚拟Mac系统 https://blog.csdn.net/qq_31867709/article/detail ...

  10. mybatis技术总结

    一.框架概述 day1 1.什么是框架 框架是系统的可重用设计,是对J2EE底层技术的封装(JDBC,IO流,多线程,Servlet,Socket). 2.框架解决了哪些问题? 1.解决了技术整合问题 ...