字符串序列 用于表示和存储文本,python中字符串是不可变的,一旦声明,不能改变 java
一般由单引号(' ),双引号(" ),三引号(''' """)包围 python
其中三引号能够由多行组成,编写多行文本的快捷语法,经常使用语文档字符串,在文件的特定地点,被当作注释。便捷的多行注释 git
Python实际三类字符串: 正则表达式
1.一般意义字符串(str) 2.原始字符串,以大写R 或 小写r开始,r'',不对特殊字符进行转义 3.Unicode字符串,u'' basestring子类
在 Python 中,字符串是“不可改变的序列” api
1.不可变 2.知足序列基本操做,按位置存取,切片及索引
1.得到帮助: 函数
>>> help(str) >>> dir(str) >>> help(str.replace)
2.不可变性 工具
在建立以后就不能就地改变(同java),不能经过对其某一位置进行赋值而改变字符 划分为不可变序列,这些字符串所包含的字符存在从左到右的顺序,不可在原处修改。 python中字符串至关于一个不可变序列的列表,一旦声明,每一个字符位置固定 spa
意味着若想改变,必须新建一个! code
>>>s=’spam’ >>>s[0]=’k’ #TypeError #修改字符串相似java,从新赋值 s = ‘k’ + s[1:]
原始字符串常量,r”abcd”,(r/R)即去掉了反斜线转义机制。关闭转义机制,即\再也不表示转义 orm
用处:
1.正则表达式
用于处理正则表达式,减小反斜杠
p4search = re.compile(r'\s*')
2.系统路径
能够方便地表示系统路径
path = r'e:\book'
Unicode是书写国际文本的标准方法。
Python容许你处理Unicode文本——你只须要在字符串前加上前缀u或U。例如,u"This is a Unicode string."
BP: 在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
1.基本操做
+ :string1+string2 #联接字符串,将后一个串连接到前一个串的后面 Python不容许在+表达式中出现其余类型,须要手工转【这点不一样于java】‘abc’+str(9) * :string*n #建立一个新字符串重复n次原来的串 [] :string[n] #从字符串中获取对应位置的一个字符 [:] :string[n:m] #截取字符串,若是为:m从头到m若是为n:从n到尾 in :char in string #判断一个字符是否在串中,若是在返回为真(True) not in :char not in string #判断一个字符是否不在串中,若是在返回为真(True) r/R : r/Rstring #禁止转义字符的实际意义,整个字符为原始意义 len() : 长度len(s)
2.类型转换
字符串到数字 int/float/long
数字到字符串 str
>>> int(42) 42 >>> int('42') 42 >>> str(42) '42' >>> float('42.0') 42.0 >>> str(42.0) '42.0'
或者使用string模块的函数
s:进行转换的字符串, base:可选,目标进制
import string string.atoi(s[,base]) #base默认为10,若是为0,那么s就能够是012或0x23这种形式的字符串,若是是16那么s就只能是0x23或0X12这种形式的字符串 string.atol(s[,base]) #转成long string.atof(s[,base]) #转成float
字符串转列表:
s=’spam’ l = list(s) l2 = "hello world".spilt()
列表转字符串
k = ‘’.join(l)
注意,不能join列表中的非字符串
3.修改字符串
s = s + ’a’ s = s[3:] + ‘b’ s = s.replace(‘pl’,’pa’) a = '' #赋值空 del a #整个变量删除
4.索引和分片
索引s[i]
s[0]首个 s[-1] = s[len(s)-1] 倒数第一个
分片s[i:j]
不含上边界,s[1:3] 取[1-2] s[1:]取1到结束 s[:3] 取开始到2 s[:-1]开始到倒数第二个 s[:]开始到结尾,至关于一个复制 s[1:10:2] 取1-9,步长=2 s[a:b:-2] 步长为负数,两个边界意义反转了,表示从b+1到a,步长-2 s=’abcdefg’ s[5:1:-1] 获得 fedc s[1:3] == s[slice(1,3)] 内置函数
这里只介绍基本字符串格式化,扩展在后续篇幅介绍 %c 单个字符 %d 十进制整数 %o 八进制整数 %s 字符串 %x 十六进制整数,其中字母小写 %X 十六进制整数,其中字母大写
>>> str = "so %s a day!" >>> str % 'beautiful' 'so beautiful a day!' >>> '{0} is {1}'.format('a','b') 'a is b' >>> template = "{0}, {1} and {2}" >>> template.format('a', 'b', 'c') 'a, b and c'
【字符串方法是python文本处理头号工具】
字符串第一个字符大写
原字符居中,空格填充至width长度
得到字符串中某一个子串的数目,计算出现次数,可指定范围
解码字符串,出错默认报ValueError,除非errors是ignore或replace
是否以**结尾
把字符串中tab转为空格,默认8个
检测是否包含str,存在返回开始索引,不然返回-1
同find,不存在报异常,ValueError
至少一个字符,且全部字符均为字母或数字,True. 检测字符串是否只包含0-9A-Za-z
至少一个字符,全部字符都是字母,True. 检测字符串是否只包含字母
只包含十进制数,True
只包含数字,True. 检测字符串是否仅包含数字
至少一个区分大小写字符且全部字符小写,True. 检测字符串是否均为小写字母
只含数字字符,True
只包含空格,True. 检测字符串是否均为空白字符
标题化字符,True. 检测字符串中的单词是否为首字母大写
至少一个区分大小写字符且全部字符大写,True. 检测字符串是否均为大写字母
以string做为分隔符,seq中全部元素合并为新的字符串. 将原字符串插入参数字符串中的每两个字符之间
返回一个原字符串左对齐,空格补充至长度width
转小写. 将字符串所有转为小写
截掉左侧的空格
= find+split,从str出现第一个位置,截断为pre_str,str,after_str元组,不含str则pre_str=str
string.replace(str1,str2,num=string.count(str1))
替换,指定不超过num次,可做为模板实现
同find,右边开始
同index,右边开始
右对齐,空格补齐
同partition,右边开始
清理右侧空白,包括换行符,返回处理后字符串
以str切片,可指定分割次数, 分割字符串,返回列表,默认分隔符空格
s.splitlines([keepends]) 按行分隔,可指定分割次数
以str开头,True. 检测字符串是否以某一子串开头
在string上执行lstrip和rstrip
反转string中大小写. 字符串中小写转大写,大写转小写
标题花,单词首字母大写,其他小写
s.translate(table) 根据str给出表转换string字符,要过滤的字符放在del参数中
转大写. 将字符串所有转为大写
返回长度width的字符串,原字符串右对齐,前面填充0
获取字符串的长度
1.循环中用到长度
while i < len(stri): #修改 size = len(stri) while i < size
2.字符串追加
l = ['a', 'b'] result = '' for i in l: result += i #修改 result = ''.join(l)
1.转义符
几个经常使用:
\n换行,\\反斜杠 \t制表 \'单引号 \r回车 \"双引号