python类型-序列-字符串
python中单引号和双引号的含义是一样的。字符串是一种直接量或者说是一种标量,是不可变类型,字符串是由独立的字符组成的,并且这些字符可以通过切片操作顺序的访问。
python实际有三类字符串:通常意义的字符串(str)和Unicode字符串(unicode)实际上都是抽象类basestring的子类,不能实例化。
字符串的创建:直接赋值astring='abc'或者使用str()函数bstring=str(range(4))
访问字符串:使用方括号加一个或者多于一个索引的方式获得子串
改变字符串:重新赋值,不能只改变一个字符或者一个子串。
删除字符和字符串:赋一个空值astring=''或者使用del
1.字符串操作符
标准类型操作符:< > != == 做比较的时候是按照ASCLL值的大小来比较的。
>>> str1 = 'abc'
>>> str2 = 'abd'
>>> str1 < str2
True
>>> str1 > str2
False
>>> str1 != str2
True
>>> str1 == str2
False
序列操作符切片:正向索引开始于0,结束于总长度减1;反向索引时,从-1开始,向字符串开始的方向计数,到字符串长度的负数为索引的结束。
>>> astring = 'abcdefg'
>>> astring[-1]
'g'
>>> astring[-3:-1]
'ef'
成员操作符(in, not in):用于判断一个字符或者一个子串时候出现在另一个字符串中,出现返回True,否则返回False。
>>> 'bc' in 'abcd'
True
>>> 'n' in 'abc'
False
连接符(+):'abc' + 'cd' = 'abccd'
>>> 'ab''cd'
'abcd'
2.内建函数
- cmp():根据字符串的ASCLL码进行比较;
>>> str1
'abc'
>>> str2
'abd'
>>> cmp(str1, str2)
-1
- len():返回字符串的字符数;
>>> str1
'abc'
>>> len(str1)
3
- max()/min():返回最大或者最小的字符(按照ASCLL码值排列);
>>> str1
'abc'
>>> max(str1)
'c'
>>> min(str1)
'a'
>>>
- enumerate():同时返回循环索引和循环元素;
>>> str1
'abc'
>>> for i, item in enumerate(str1):
... print i, item
...
0 a
1 b
2 c
- zip():返回一个列表,其第一个元素是it0、it1…这些元素的第一个元素组成的一个元组,第二个。。。依此类推;
>>> str1
'abc'
>>> str2
'acd'
>>> zip(str1, str2)
[('a', 'a'), ('b', 'c'), ('c', 'd')]
- str():字符串工厂函数;
- unicode():unicode字符串工厂函数;
- chr():用一个范围在range(256)内的(0-255)整型作为参数,返回一个对应的字符;
>>> chr(97)
'a'
- unichr():和chr()一样,返回的是Unicode字符;
>>> unichr(97)
u'a'
- ord():以一个字符(长度为1的字符串)作为参数,返回对应的ASCLL数值,或者Unicode数值。
>>> ord('a')
97
3.三引号
允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
>>> hi = '''hi
... there'''
>>> hi
'hi\nthere'
>>> print hi
hi
there
4.字符串不变性
字符串是一种不可变数据类型,它的值不能被修改。想要改变一个字符串可以截取一个子串,或者在字符串的末尾连接另一个字符串等。
>>> s = 'abc'
>>> id(s)
140717601692336
>>> id(s+'def')
140717486061344
>>>
5.Unicode
处理Unicode的规则:
程序中出现字符串时一定要加个前缀u
不要用str()函数,用unicode()代替
不要用过时的string模块,如果传给它的是非ASCLL字符,会把一切搞砸
不到必须时不要在程序里面编解码Unicode字符,只在你要写入文件或数据库或者网络时,才调用encode()函数,相应的,只在你需要把数据读回来的时候才调用decode()函数
内建的unicode()函数:接受一个string做参数,返回一个unicode字符串
内建的decode()/encode()方法:接收一个字符串做参数返回该字符串对应的解码后/编码后的字符串
unicode类型:用unicode()工厂方法或者直接在字符串前面加一个u来创建
Unicode序数:内建的unichar()函数返回一个对应的unicode字符(需要一个32位的值)
附录:字符串类型内建方法
方法 |
描述 |
string.capitalize() |
把字符串的第一个字符大写 >>> a = 'abc' >>> a.capitalize() 'Abc' |
string.center(width) |
返回一个原字符串居中,并使用空格填充至长度width的新字符串,填充方式是字符串两边平均进行填充 >>> a.center(7) ' abc ' |
string.count(str, beg=0, end=len(string)) |
返回str在string里面出现的次数,如果beg或end指定则返回指定范围内str出现的次数 >>> a.count('bc') 1 |
string.decode(decoding='UTF-8', errors='strict') |
以decoding指定的编码格式解码string,如果出错默认报一个ValueError的异常,除非errors指定的是'ignore'或者'replace' |
string.encode(encoding='UTF-8', errors='strict') |
以encoding指定的编码格式编码string,如果出错默认报一个ValueError的异常,除非errors指定的是'ignore'或者'replace' |
string.endswith(obj, beg=0, end=len(string)) |
检查字符串是否已obj结束,如果beg或者end指定则检查指定的范围内是否已obj结束,如果是,返回True,否则返回False |
string.expandtabs(tabsize=8) |
把字符串string中的tab符号转换为空格,默认的空格数tabsize是8 |
string.find(str, beg=0,end=len(string)) |
检测str是否包含在string中,如果beg和end指定范围,则检查是否包含在指定的范围中,如果是返回开始的索引值,否则返回-1 |
string.index(str,beg=0, end=len(string)) |
跟find()方法一样,只不过如果str不在string中会报一个异常 |
string.isalnum() |
如果string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False |
string.isalpha() |
如果string至少有一个字符并且所有字符都是字母则返回True,否则返回False |
string.isdecimal() |
如果string只包含十进制数字则返回True,否则返回False |
string.isdigit() |
如果string只包含数字则返回True,否则返回False |
string.islower() |
如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False |
string.isnumeric() |
如果string中只包含数字字符,则返回True,否则返回False |
string.isspace() |
如果string中只包含空格,则返回True,否则返回False |
string.istitle() |
如果string是标题化的(见title())则返回True,否则返回False |
string.isupper() |
如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的字符)都为大写,则返回True,否则返回False |
string.join(seq) |
以string作为分隔符,将seq中的所有的元素(字符串表示)合并为一个新的字符串 >>> b = ' ' >>> b.join(['he', 'she', 'it']) 'he she it' |
string.ljust(width) |
返回一个原字符串左对齐,并使用空格填充至长度width的新字符串 |
string.lower() |
转换string中所有大写字符为小写 |
string.lstrip() |
裁掉string左边的空格 |
string.partition(str) |
有点像find()和spit()的结合体,从str出现的第一个位置起,把字符串string分成一个3元组(string_pre, str, string_post_str),如果string中不包含str,则string_pre_str = string |
string.replace(str1, str2, num=string.count(str1)) |
把string中的str1替换成str2,如果num指定,则替换不超过num次 |
string.rfind(str, beg=0, end=len(string)) |
类似于find()函数,不过从右边开始查找 |
string.rindex(str, beg=0, end=len(string)) |
类似于index(),不过是从右边开始查找 |
string.rjust(width) |
返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 |
string.rpartition(str) |
类似于partition()函数,不过是从右边开始查找 |
string.rstrip() |
删除string字符串末尾的空格 |
string.split(str="",num=string.count(str)) |
以str为间隔符切片string,如果num有指定值,则仅分割num个子字符串 |
string.splitlines(num=string.count("\n")) |
按照行间隔,返回一个包含各行作为元素的列表,如果num指定则仅切片num行 |
string.startwidth(obj, beg=0, end=len(string)) |
检查字符串是否以obj开头,是则返回True,否则返回False,若果beg和end指定值,则在指定范围内检查 |
string.strip([obj]) |
在string上执行lstrip()和rstrip() |
string.swapcase() |
翻转string中的大小写 |
string.title() |
返回标题化的string,就是说所有单词都是以大写开始,其余字母均为小写(详见title()) |
string.translate(str, del="") |
根据str给出的表(包含256个字符)转换string的字符,要过滤掉的字符被放到del参数中 |
string.upper() |
转换string中的小写字母为大写 |
string.zfill(width) |
返回长度为width的字符串,原字符串string右对齐,前面填充0 |
>>> quest = 'what is your favorite color?'
>>> quest.capitalize()
'What is your favorite color?'
>>> quest.center(40)
' what is your favorite color? '
>>> quest.count('or')
2
>>> quest.endswith('color?')
True
>>> quest.find('or', 30)
-1
>>> quest.find('or', 22)
25
>>> quest.find('or', 10)
16
>>> ':'.join(quest.split())
'what:is:your:favorite:color?'
>>> quest.replace('favorite color', 'quest')
'what is your quest?'
>>> quest.upper()
'WHAT IS YOUR FAVORITE COLOR?'
>>>
python类型-序列-字符串的更多相关文章
- python类型-序列
注:本文档主要是学习<Python核心编程(第二版)>时做的资料整理. 1.序列 序列的成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,包括字符串(普通字符串和Unic ...
- python数据类型:序列(字符串,元组,列表,字典)
序列通常有2个特点: 1,可以根据索引取值 2,可以切片操作 字符串,元组,列表,字典,都可以看做是序列类型 我的操作环境:Ubuntu16.04+python2.7 一.字符串类型 >按索引获 ...
- python类型-序列-列表
列表类型也是序列式的数据类型,可通过下标或者切片操作来访问某一个或某一块连续的元素. 列表的元素是可变的,可包含不同类型的元素,列表类型的元素可以是另一个序列类型. 1.创建列表类型数据并赋值 列表使 ...
- python类型-序列-元组
元组是一种不可变类型,元组可用作一个字典的key. 1.创建一个元组并进行赋值 atuple = (123, 'abc', ('inner', 'tuple'), 7-9j) 2.访问元组中的值 元组 ...
- 【循序渐进学Python】3. Python中的序列——字符串
字符串是零个或多个的字符所组成的序列,字符串是Python内建的6种序列之一,在Python中字符串是不可变的. 1. 格式化字符串 字符串格式化使用字符串格式化操作符即百分号%来实现.在%左侧放置一 ...
- Python序列——字符串
字符串 1 string模块预定义字符串 2 普通字符串与Unicode字符串 3 只适用于字符串的操作 4 原始字符串 5 Unicode字符串操作符 内建函数 1 标准类型函数与序列操作函数 2 ...
- python笔记2-数据类型:字符串常用操作
这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...
- 14.python类型总结,集合,字符串格式化
借鉴:https://www.cnblogs.com/linhaifeng/articles/5935801.html https://www.cnblogs.com/wupeiqi/article ...
- Python数据类型之字符串类型
字符串的表示 字符串是Python中最常用的数据类型之一,必须使用成对的引号包围来表示字符串,引号可以是单引号 ' .双引号 " .三引号''' """,格式如 ...
随机推荐
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- python 练习题3
# 计算阶乘def factorial(n): if n>2: return n*factorial(n-1) else: return nprint(factorial(2))print(fa ...
- 基于 WebSocket 的聊天和大文件上传(有进度提示)完美实现
大家好,好久没有写文章了,当然不是不想写,主要是工作太忙,公司有没有网络环境,不让上网,所以写的就少了.今天是2019年的最后一天,明天就要开始新的一年,当然也希望自己有一个新的开始.在2019年的最 ...
- 【他山之石】IntelliJ Idea 内存设置
最近一次使用idea,删掉target目录内容,准备让项目重新编译的时候,整个mac系统崩溃然后黑屏重启了.紧接着就是重启后自动恢复原先打开的程序,结果再次黑屏重启.最开始以为是系统问题,还怀疑过最近 ...
- Spring Boot (5) 整合 RabbitMQ
一.前言 RabbitMQ是实现了AMQP(高级消息队列协议)的开源消息中间件,RabbitMQ服务器是用Erlang(面向并发的编程语言)编写的. RabbitMQ官网下载地址:https://ww ...
- alpha week 1/2 Scrum立会报告+燃尽图 06
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9916 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶, ...
- OpenSsl库 Rsa的简单使用
环境的配置可以参考http://www.cnblogs.com/yangyquin/p/5284530.html 网络上传输的数据很容易被抓包,如果不加密,那么网络数 据很容易被窃取,诸如用户名.密码 ...
- 【一起学源码-微服务】Nexflix Eureka 源码五:EurekaClient启动要经历哪些艰难险阻?
前言 在源码分析三.四都有提及到EurekaClient启动的一些过程.因为EurekaServer在集群模式下 自己本身就是一个client,所以之前初始化eurekaServerContext就有 ...
- 用实例理解设计模式——代理模式(Python版)
代理模式:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式分为: 静态代理 动态代 ...
- git stash使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/daguanjia11/article/ ...