1

Python 简明教程 --- 7,Python 字符串

 2 years ago
source link: https://codeshellme.github.io/2020/05/python-learn7/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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

—— Donald Knuth

目录

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

1,Python 字符串

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

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

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

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

>>> type('中国')
<class 'str'>
>>> type('abc')
<class 'str'>

2,常用转义字符

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

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

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

3,字符串长度

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

>>> len('Hello') # 一个英文字符的长度是 1
>>> len('Hi')
>>> len('Python')
>>> len('中国') # 一个中文字符的长度是 1

4,截取字符串

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

获取单个字符

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

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

-len(s)<=n<=len(s)-1
  • -len(s)<=n<0:从右往左数,取第n 个字符
  • 0<=n<=len(s)-1:从左往右数,取第n+1 个字符
>>> s = 'Hello' # 字符换变量 s
>>> len(s) # s 的长度
5 # 下标n 的范围为 -5<=n<=4
>>> s[-6] # 超出取值范围,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[-5] # 取倒数第5 个字符
>>> s[-1] # 取倒数第1 个字符
>>> s[0] # 取第1 个字符
>>> s[4] # 取最后一个字符
>>> s[5] # 超出取值范围,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range

获取部分字符

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

s[m:n]

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

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

>>> s = 'Hello'
>>> s[-5:1]
>>> s[-7:2]
>>> s[-3:2]
>>> s[0:3]
'Hel'
>>> s[3:1]
>>> s[3:-1]

m 和 n 都可不写

  • 如果不写m,代表从最左边开始
  • 如果不写n,代表到最右边结束
>>> s = 'Hello'
>>> s[:] # m 和 n 都不写代表整个字符串
'Hello'
>>> s[:3] # 不写 m,代表从最左边开始,直到下标 n
'Hel'
>>> s[2:] # 不写 n,代表从下标 m开始,直到最右边
'llo'

5,字符串连接

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

>>> 'abc' + '123'
'abc123'
>>> 'Hi' + '你好'
'Hi你好'

6,重复字符串

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

>>> 'a' * 5
'aaaaa'
>>> 'abc' * 3
'abcabcabc'
>>> '你好' * 2
'你好你好'

7,字符串包含

运算符in

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

>>> 'a' in 'abc'
>>> 'ab' in 'abc'
>>> 'ad' in 'abc'
False

运算符not in

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

>>> 'a' not in 'abc'
False
>>> 'ab' not in 'abc'
False
>>> 'ad' not in 'abc'

8,字符串格式化

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

符号 含义
%c 格式化字符
%s 格式化字符串
%d 格式化整数
%o 格式化八进制数
%x/%X 格式化十六进制数,后者为大写
%f 格式化浮点数
%e 用科学计数法格式化浮点数
>>> '%c' % 'a' # 格式化字符
>>> '%c' % 'B' # 格式化字符
>>> '%s' % '中国' # 格式化字符串
>>> '%s' % 'abc' # 格式化字符串
'abc'
>>> '%s' % 123 # 数字类型也可格式化为字符串
'123'
>>> '%d' % 12345 # 格式化数字
'12345'
>>> '%o' % 8 # 格式化八进制数字
>>> '%o' % 9 # 格式化八进制数字
>>> '%x' % 10 # 格式化十六进制数字,小写
>>> '%x' % 11 # 格式化十六进制数字,小写
>>> '%X' % 10 # 格式化十六进制数字,大写
>>> '%X' % 11 # 格式化十六进制数字,大写
>>> '%f' % 123.123 # 格式化浮点数
'123.123000'
>>> '%e' % 123.123 # 科学计数法格式化浮点数
'1.231230e+02'

宽度与小数点位数

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

  • mn 都是正整数
  • m 表示格式化的宽度,对于浮点数无效
  • n 表示小数点后的位数,只对浮点数有效
>>> '%4s' % 'abc' # 总宽度为 4
' abc' # 'abc' 之前有 1 个空格
>>> '%5s' % 'abc' # 总宽度为 5
' abc' # 'abc' 之前有 2 个空格
>>> '%5d' % 100 # 总宽度为 5
' 100' # 100 之前有 2 个空格
>>> '%.5d' % 100 # 总宽度为 5,注意 5 之前有个点
'00100' # 宽度不够用 0 补齐,所以 100 之前有 2 个 0
>>> '%.2f' % 100.123 # 小数点后保留 2 位,多余位数舍弃
'100.12'
>>> '%.5f' % 100.123 # 小数点后保留 5 位,位数不够,用 0 补齐
'100.12300'

左对齐与右对齐

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

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

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

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

推荐阅读:

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

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

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

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

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


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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK