python中字符串,列表,元组都是常用的数据类型,且都属于序列类型
从字符串说起,顾名思义字符串就是指一串字符,字符通常包括字母,数字,符号。在python中我们使用引号('或")来创建字符串。即创建字符串只要为变量分配一个值即可。例如:
a = 'hello ,world!'
b = "hello ,world!"
当所要创建的字符串中包含'或"的时候,例如要创建字符串 I love 'python'.此时由如下几种处理方式
a = ' I love "python" '
b = " I love 'python' "
c = ' I love \'python\' '
不难看出当字符串中中包含'或"中的一种时,可以通过另一种作为限定字符串范围的方式。
若字符串中同时存在单引号'和双引号"的时候,因为 ' 和 " 会引起歧义,故我们在它前面插入一个\
表示这是一个普通字符,不代表字符串的起始。
至此我们引入一个概念——转义字符:即在字符前加上\,字符就不再代表字符本身的意思,而是被赋予了一种新的解释或功能。
常见的转义字符有:
\n | 换行 | \\ | 代表反斜杠 |
\t | 水平制表符 | \' | 代表一个单引号,同理"也可以这样的方式输出 |
\b | 退格 | \0 | 代表一个空字符 |
\r | 回车 | \a | 代表系统提示音 |
注:在python 中若要去掉字符串的转义,只需要在字符串前面加上r即可,例如:
>>>a = r'\n\t\b\r\\\'\0\a' >>>print(a)
\n\t\b\r\\\'\0\a
字符串作为最常用的数据类型,工作中对其进行相关操作自然是开发者的家常便饭。首先从字符串拼接和格式化说起。
在python种如何将多个字符串拼接起来呢?大致有一下四种方式可以实现:
- 使用 +
这是最直接也是最简单的方式,直接通过+实现对字符串的拼接,实例如下
>>>a = 'abc' >>>b = 'def' >>>a + b 'abcdef'
2.格式化字符串
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在python 中字符串格式化的使用实例如下:
>>> a = 'python' >>> b = 'I love %s'%a >>> print(b) I love python
其他常用的格式化字符串符号:
%d | 格式化整数 | %o | 格式化无符号八进制数 |
%f | 格式化浮点数 | %x | 格式化无符号16进制数 |
%c | 格式化字符及其ASCII码 | %e | 科学计数法格式化浮点数 |
格式化操作符辅助指令:
* | 定义宽度或者小数点精度 | 0 | 显示的数字前面填充'0'而不是默认的空格 |
- | 左对齐 | (var) | 映射变量(字典参数) |
+ | 在正数前面显示加号( + ) | % | '%%'输出一个单一的'%' |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') | m.n | m 是显示的最小总宽度,n 是小数点后的位数 |
实例:
>>> print('%-56.3f'%10.1)#左对齐,总宽度6保留小数点后3位数 10.100 >>> print('%5s'%'ab')#总宽度5,默认右对齐 ab
3.使用join()方法
python中定义了多种字符串方法,熟练的运用这些方法可以方便我们对字符串进行处理。其中join()方法就可以用来完成字符串的拼接,实例如下:
>>> print(''.join('a'))
a
>>> print(':'.join(['a','b','c']))
a:b:c
需要强调的是,.join()方法的作用是连接字符串。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。故.join()括号内的内容即对象不能是数值类型,且只能是一个对象因此若有多个内容必须写成列表或者元组的形式,否则会报错,实例如下
>>> print(''.join('a','b','c')) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print(''.join('a','b','c')) TypeError: join() takes exactly one argument (3 given)#括号内的内容必须是一个对象
4.使用format格式化函数
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序,并支持设置参数。具体实例如下:
>>> print('{}{}{}'.format(1,'a',(1,2,3)))
1a(1, 2, 3)
>>> print('{},{},{}'.format(1,'a',(1,2,3)))
1,a,(1, 2, 3)
>>> print('{1},{0},{2}'.format(1,'a',(1,2,3)))
a,1,(1, 2, 3)
>>> print('{n0},{n1},{n2}'.format(n1=1,n2='a',n0=(1,2,3)))
(1, 2, 3),1,a
>>> print('{:.2f}'.format(12.333))#小数点后保留两位 12.33 >>> print('{a:.2f}'.format(a=12.333)) 12.33 >>> print('{:.2%}'.format(0.333))#百分比格式 33.30% >>> print('{:o}'.format(20))#转换成8进制 24
>>> print('{:x}'.format(20))#转换成16进制
14
>>> print('{a:<10}'.format(a=10.3))#左对齐长度为10
10.3
>>> print('{a:0<10}'.format(a=10.3))#左对齐,长度为10,数字补0填充右边
10.3000000
>>> print('{a:2<10}'.format(a=10.3))#左对齐,长度为10,数字补2填充右边
10.3222222
>>> print('{a:0>10}'.format(a=10.3))#右对齐,长度为10,数字补0填充左边
00000010.3
>>> print('{a:0^10}'.format(a=10.3))#居中对齐,长度为10,数字补0填充两边
00010.3000
字符串的常用方法
python中有许多字符串的方法,熟悉掌握相关方法能方便我们对字符串进行特定的处理以满足某些需求。下面将列举一些常用的字符串方法及其使用实例。
1.count()
语法:string.count(str, beg=0, end=len(string))
作用:返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
>>> 'abcdabcdaaa'.count('a',0,5)#返回'a'在字符串前5个字符中出现的次数 2
2.find
语法:string.find(str, beg=0, end=len(string))
作用:检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
>>> 'asdbsasbdasba'.find('a')#返回'a'在字符串中第一次出现的索引的位置 0 >>> 'asdbsasbdasba'.find('a',3,7)#返回'a'在索引3到索引7范围内(包括3不包括7)第一次出现的索引的位置 5 >>> 'asdbsasbdasba'.find('asd')#返回字符串'asd'在整个字符串中第一次出现的索引的位置
0 >>> 'asdbsasbdasba'.find('123')#字符串'123'未出现在原字符串中,故返回-1 -1
3.index
语法:string.index(str, beg=0, end=len(string))
作用:跟find()方法一样,只不过如果str不在 string中会报一个异常.
4.isdigit
语法:string.isdigit()
作用:如果 string 只包含数字则返回 True 否则返回 False.
>>> '21321231'.isdigit() True >>> '123asd'.isdigit() False
5.isalpha
语法:string.isalpha()
作用:如果 string 只包含字母则返回 True 否则返回 False.
>>> 'asdsad'.isalpha() True >>> '123ad'.isalpha() False
6.endswith
语法:string.endswith(obj, beg=0, end=len(string))
作用:检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
>>> 'asdsada123'.endswith('123',0,9) False >>> 'asdsada123'.endswith('12',0,9) True
7.startwith
语法:string.startswith(obj, beg=0,end=len(string))
作用:检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
>>> 'asdsadasdasd'.startswith('sd',0,10) False >>> 'asdsadasdasd'.startswith('sd',1,10) True
8.islower
语法:string.islower()
作用:如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
>>> 'sadsa'.islower() True >>> '12Adsd'.islower() False
9.isupper
语法:string.isupper()
作用:如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
>>> 'ASD'.isupper() True >>> '12sa'.isupper() False
10.upper
语法:string.upper()
作用:转换 string 中的小写字母为大写
>>> 'asdsadas'.upper() 'ASDSADAS'
11.lower
语法:string.lower()
作用:转换 string 中的大写字母为小写
>>> 'ASDF'.lower() 'asdf'
12.strip (lstrip,rstrip)
语法:string.strip() string.lstrip() string.rstrip()
作用:删除 string 字符串中的空格.
删除 string 字符串左边的空格.
删除 string 字符串末尾的空格.
>>> ' 123 '.strip() '123' >>> ' 123 '.lstrip() '123 ' >>> ' 123 '.rstrip() ' 123'
13.capitalize
语法:string.capitalize()
作用:把字符串的第一个字符大写
>>> 'sadasd'.capitalize() 'Sadasd'
14.titile
语法:string.titile()
作用:返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写
>>> 'abc def ghi'.title() 'Abc Def Ghi'
15.split
语法:string.split(str="", num=string.count(str))
作用:以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串.且返回值为一个列表。
>>> 'asdsadsadsadasdsadsad'.split('a',5) ['', 'sds', 'ds', 'ds', 'd', 'sdsadsad']
16.repalce
语法:string.replace(str1, str2, num=string.count(str1))
作用:把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
>>> 'abcabcabcabc'.replace('a','A',3) 'AbcAbcAbcabc'
总结:1.字符串作为常用的数据类型,属于序列类型中的一种
2.字符串的转义能表示很多不方便显示的字符,但同时也会带来一些麻烦,要学会正确的处理
3.字符串方法可以方便的对字符串作出处理,虽然字符串是不可变对象,但是可以通过返回新对象的方法来实现增删改查,字符串方法很多,掌握常用的就好