字符串是 Python 中最常用的数据类型。字符型常量必须加引号(作为定界符),可以是单引号(‘’)、双引号 (“”)、三引号(''' '''),如:
- ‘a’
- “Hello” “” “It’s sunny“ (‘It’s sunny’写法错误)
- '''-What's up? -"Fine, and you?" -I'm good!'''
一般单引号和双引号用于单行字符串;三引号用于多行字符串。 如果引号是字符串的一部分,那么一定要换另一种引号作为定界符。
访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python字符串有两种序号体系:
Python 访问子字符串,可以使用索引和切片操作。索引值以 0 为开始值,-1 为从末尾的开始位置。
<字符串>[n] (取第n个字符。索引)
<字符串>[n:m] (取从n到m的子串,不包含m。n、m可缺省。切片)
<字符串>[start:stop:step](取从start步长为step到stop的子串,不包含stop,三者都可缺省。称为切片)
- [start:] 从start 提取到结尾
- [:stop] 从开头提取到stop - 1
- [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
- [start: stop] 从start 提取到stop - 1
- [start: stop :step] 从start 提取到stop - 1,每step 个字符提取一个
Python习惯:
- 一个区间,包括起始值,但不包括终止值;
- 所有编序号的地方,从0开始,而不是从一开始
转义字符
转义字符: \与其后一个字符组成新含义
字符 | 含义 |
\’ | 单引号 |
\” | 双引号 |
\b | 退格 |
\\ | 反斜线 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 水平制表符 |
\v | 垂直制表符 |
字符串运算符
字符串 | 运算符 |
x + y | 连接两个字符串x和y |
x * n 或 n * x | 复制n次字符串x |
x in(not in)s | 判断x是(不是)s的子串 |
r/R | 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 |
% | 格式化字符串 |
字符串格式化
为了更好的可读性和灵活性,字符串需要 格式化 ,可以解决 字符串和变量混 合 的格式安排
格式: <字符串>.format(<逗号分隔的参数>)
- 求圆的面积问题,想输出:“圆的面积为23.4平方米。”
- 判断水仙花数问题想输出:“153是水仙花数”
- 鸡兔同笼问题想输出“鸡有24只,兔有12只”
字符串相应的位置嵌入“槽”(也就是大括号{}), 变量作为参数,放在format括号中
- “圆的面积为23.4平方米。” —— ”圆的面积为{}平方米。”.format(s)
- “153是水仙花数” —— “{}是水仙花数”.format(x)
- “鸡有24只,兔有11只” —— “鸡有{}只,兔有{}只”.format(a,b)
- 槽内格式: {<参数序号>:<格式控制标记>} A、参数序号的用法: • 没有序号,按顺序依次替换 “鸡有 24 只,兔有 12 只” —— “鸡有{}只,兔有{}只”.format(24,11) • 有序号,按序号替换,序号从0开始编号 “鸡有 24 只,兔有 12 只” —— “鸡有{1}只,兔有{0}只”.format(11,24)
B、格式控制标记:
格式控制标记用来控制参数显示时的格式 。格式控制标记包括:< 填充>< 对齐 >< 宽度 >,<. 精度 >< 类型 >6 个字段,这些字段都是可选的,可以组合使用,这里按照使用方式逐一介绍。
【例】平方根格式化
获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。
输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
a = eval(input())print("{:+>30.3f}".format(pow(a, 0.5)))
内置函数
运算符 | 描述 |
len(x) | 返回字符串x的长度 |
str(x) | 将x转换成字符串 |
chr(x) | 返回Unicode编码x对应的字符 |
ord(x) | 返回字符x对应的Unicode编码 |
chr()和ord()是互逆的两个函数
内置的字符串处理方法
字符串类型有43个内置方法,在此介绍常用的16个
方法 | 含义 |
<string>.upper() | 字符串字母大写 |
<string>.lower() | 字符串字母小写 |
<string>.islower() | 判断字符串中字符是否全小写 |
<string>. isprintable() | 判断字符串中字符是否全部可打印 |
<string>.isnumeric() | 判断字符串中字符是否全为数字 |
<string>.isspace() | 判断字符串中字符是否全为空格 |
<string>.endswith() | 判断字符串是否以某些字符结尾 |
<string>.startswith() | 判断字符串是否以某些字符开头 |
<string>.strip() | 去除两边空格或去除指定字符 |
<string>.split() | 按指定字符分割字符串为数组 |
<string>.join() | 连接两个字符串序列 |
<string>.find() | 搜索指定字符串 |
<string>.replace() | 字符串替换 |
<string>.count() | 返回字符串中子串出现次数 |
<string>.center() | 字符串居中 |
<string>.format() | 字符串格式化 |