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