Loading

python0.4----字符串

字符串:是由单引号或双引号括起来的文本(不包含引号)

 

字符串操作:

 字符串连接: str1=str2+str3  

 输出重复字符串:str1=str2 * 3

访问字符串中的某个字符:

通过下标访问第i字符:字符串名[下标i],字符串中包含文字也可以,一个文字相当于一个字符,虽然它可能占有2-4个字节。

字符串不可变:

一旦字符串放在了内存之中,则该内存中的字符串无法改变,数字类型同理。

例如:想要修改字符串str1里的单个字符。str1='yuliangiloveyou' 。由于字符串无法改变,表达式str1[1]=’a’是错的,不可能执行成功。

如果想改变一个字符串变量,只能通过修改引用。

例如:str1='yuliangiloveyou'。id(str1)=94618624。使用str1='iloveyouyuliang'语句。id(str1)=94619456。由于两次id不一样可知后面的赋值语句改变的是字符串引用,而不是内存里面的字符串。

 

字符串存到内存的过程:

例如:’a’

a通过ASCII码表-》十进制数字-》二进制数据。

chr(num):将十进制数通过ASCII码表转换成字符。

ord(char):将字符通过ASCII码表转换成十进制数。

 

截取字符串中的一部分:

str2[[start,] [:stop]],截取字符串str2的[start,stop)区间中的字符,若start和stop全部省略,则打印str2整个字符串。

判断str1是否在str2中:

str1 in str2:若str1为str2的子字符串,则返回1,否则返回0。

字符串的比较:

从第一个字符开始比较,谁的ASCII码值大,谁就大。例如: 'baz'>'aca'

如果相等,会比较下一个字符的ASCII码值,谁的值大谁就大。例如: 'baz'<'bbz'

若两个字符串前面的都相等,那么谁的字符串长谁就大。 例如:'bab'>'ba'

 

格式化输出:

%d ,%s,%f:格式化占位符  优点:在打印多个数据的时候很方便

print(‘%s %d%.3f’ %(str1, num1,float1))   优点:在打印多个数据的时候很方便。

 %.3f:表示保留3位小数点,采用四舍五入的规则。

%.2d : 将整数的位数设置为两位,不够的位数加0。

%02d =%.2d。

 

\:转义字符(将一些字符转换成有特殊含义的字符)

\n表示一个字符,功能是换行

\\:输出一个\

\’ : 输出一个’

\” :输出一个”

\t: 制表符(windows默认相当于4个空格,linux默认相当于8个空格)。

 

如果字符串内有很多换行,用\n写影响阅读。可以用如下形式:

print("""goog

dddd

rer""")

 

如果字符串里面有很多个字符需要转义,就需要很多个\,为了简化,python允许用r表示内部字符串默认不转义(windows用\连接各个目录,linux用/连接各个目录)。

print(r'\q\w\r\t\y\u\\gfg\dfasd\"\fasd'\')

 

有关字符串的函数:

eval(str):将字符串str当成有效的表达式来求值,并返回计算结果。和强制转换int()函数类型,不过要强与int()

例子:num1=eval(“123”)------>num1=123   跟int()一样

num1=eval(‘12+3’)----->num2=5      比int()要强

 

len(str):返回字符串长度。

str.lower():将str中的大写字母转换成小写字母。str本身不会改变,因为字符串变量是不可一改变的变量,它只是重新开辟了一个内存空间,将转换后的字符串放在新的内存空间里面。

str.upper():将str中的大写字母转换成小写字母..................................(其他同上)。

str.swapcase():小写变大写,大写字母为小写字母.................................(其它同上)。

str.capitalize():首字母大写。

str.title():把字符串里面的每个单词的首字母大写。

str.center(width,fillchar):设置该字符串的长度为width,将str字符串居中,其他位置用fillchar填充,返回新字符串。

str.ljust(width[,fillchar]):设置该字符串的长度为width,将str字符串左对齐,其他位置用fillchar填充,返回新字符串。

str.rjust(width[,fillchar]):设置该字符串的长度为width,将str字符串右对齐,其他位置用fillchar填充,返回新字符串。

str.zfill(width):设置字符串的长度为width,右对齐,其他位置填充0字符。

str.count(str1[,start][,end]):返回str中str1出现的次数,搜索范围是[start,end),默认搜索范围是[0,len(str) )

str.find(str1[,start][,end]):在[start,end)中从左至右寻找str1是否包含在str中,若str1包含在str中,返回第一个查找到的下标,若str1不存在,则返回-1

str.rfind(str1[,start][,end]):在[start,end)中从右至左寻找str1是否包含在str中,若str1包含在str中,返回第一个查找到的下标,若str1不存在,则返回-1

str.index(str1,start=0,end=len(str)):跟find方法一样,若str1不存在,则产生异常ValueError

str.rindex(str1,start=0,end=len(str)):跟rfind方法一样,若str1不存在,则产生异常ValueError

str.lstrip([char]):删掉str左侧指定的字符char,默认删除空格

str.rstrip([char]):删掉str右侧指定的字符char,默认删除空格

str.strip([char]):删掉str左侧和右侧的字符char,默认删除空格

 

str1.split(str2[,num]):以str2为分隔符截取字符串str1,num默认为str1.count(),表示全部截取。若指定num,则从左到右截取num个字符串。

例如:

str1='i******love*****his******name**is'

str1.split('*')

输出:

['i', '', '', '', '', '', 'love', '', '', '', '', 'his', '', '', '', '', '', 'name', '', 'is']

解释:i和*被分隔成为'i',*和*被分隔成' ',*love*被分割成'love'

str1.splitlines([keepends]):表示用'\r' ,'\r\n','\n'作为分隔符截取str1,keepends默认为False,表示不会保存分隔符。当keepends设置成True时,会在分隔的字符串末尾加上分隔符。

例如:

str1='''ilovei

iloveyou

iloveme

'''

str1.splitlines()---截取后-->'ilovei','iloveyou','iloveme'

str1.join(seq):已指定的字符串str1作为分隔符,将seq里面的各个字符串组合起来。

例如:

seq=[‘123’,’12414’,’12523416rgffs’]

str1=’***’

str1.join(seq)----组合后的结果为>>>>123***12414***12523416rgffs

max(str1):查找字符串里面的ASCII值最大的字符。

min(str1):查找字符串里面的ASCII值最小的字符。

 

str1.replace(oldstr,newstr,count):用newstr替换str1里面的oldstr。默认全部替换,如果指定count,则只替换前count个。

stran=str.maketrans(str1,str2):创建一个映射表stran。

例如:str1=’ac’,str2=’56’  -----表示> a映射成5,c映射成6。

str1.translate(stran):通过映射表stran修改str1。即将str1里面的a字符换成5,c字符换成6.

 

str1.startswith(str,start=0,end=len(str)):在给定的范围内判断是否以给定的字符串开头,是则返回True,否则返回False。如果没有给定范围,则默认为整个字符串。

str1.endswith(str,start=0,end=len(str)):在给定的范围内判断是否以给定的字符串结尾,是则返回True,否则返回False。如果没有给定范围,则默认为整个字符串。

 

str2=str1.encode(encoding=’utf-8’,errors=’strict’):将str1以encoding的形式编码,成为二进制形式的数据,将编码后的数据传给str2。errors可以是ignore(忽略错误),strict(不忽略错误)。

str2.decode(encoding=’utf-8,errors=’strict’):将str2解码并返回。要求编码和解码格式要一致。

 

str1.isalpha():str1如果长度大于等于1,且所有字符都是字母,则返回True,否则返回False

str1.isalnum():str1如果长度大于等于1,且所有字符都是字母或数字,则返回True,否则返回False。

str1.isdigit():若str1长度大于等于1,且只包含数字字符,则返回True,否则返回False。

str1.isnumeric():和str1.i是digit()效果一样。

str1.isdecimal():和isdigit(),isnumeric()差不多,不过它只包含十进制字符

str1.isupper():str1如果字符串中至少包含一个英文字母,且所有英文字符都是大写的英文字母,则返回True(可包含特殊字符和数字),否则返回False。

str1.islower():str1如果字符串中至少包含一个英文字母,且所有英文字符都是小写的英文字母,则返回True(可包含特殊字符和数字),否则返回False。

str1.istitle():如果字符串是标题化的(字符串的每个单词首字母都是大写),则返回True,否则返回False。

str1.isspace():str1只包含空格(\t也可以,他表示4个空格。\n也可以。\r也可以。\f也可以)就返回True,否则返回False

posted @ 2018-06-16 00:00  FishLight  阅读(385)  评论(0编辑  收藏  举报