字符串表示方式
第一种方式:
str1 = 'redhat'
第二种方式:
str2 = "redhat"
第三种方式:
str3 = """redhat"""
字符串类型转换
str() 将其他类型内容转换为字符串
int() 将字符串转换为为整数
float() 将字符串转换为浮点型
long() 将字符串转换为长整型
字符串常用操作1
字符串属于序列,序列支持如下操作:
1.索引
索引(s[i]):获取特定偏移的元素
给出一个字符串,可以输出任意一个字符,如果索引为负数,就相当于从后向前数
In [48]: s[0] Out[48]: 'h' In [49]: s[-1] Out[49]: 'o' In [50]: s[0]+s[-1] Out[50]: 'ho'
2.切片
切片(s[i:j]):提取对应的部分作为一个序列:
上边界并不包含在内
如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度
In [51]: num='asdfgh' In [52]: num[0:2] Out[52]: 'as' In [53]: num[:2] Out[53]: 'as'
扩展:
s[i:j:k],其中i,j含义同上,k为递增步长
In [55]: num[0:5:2] Out[55]: 'adg'
s[:]表示获取从偏移量为0到末尾之间的元素
In [56]: num[:] Out[56]: 'asdfgh'
s[1:]表示获取从偏移量为1到末尾之间的元素
In [57]: num[1:] Out[57]: 'sdfgh'
s[::-1]表示倒序显示所有元素
In [58]: num[::-1] Out[58]: 'hgfdsa'
3.成员操作符(判断子串)
判断一个字符串是不是属于s字符串
In [59]: a='hello' In [60]: 'o' in a Out[60]: True In [61]: 'o' not in a Out[61]: False
4.连接操作符
In [62]: a='hello' In [63]: b='world' In [64]: a+b Out[64]: 'helloworld'
5.重复操作符
In [65]: "#"*10 #将#重复显示10次 Out[65]: '##########' In [66]: print "#"*10+"SYSTEM"+"#"*10 ##########SYSTEM##########
字符串常用操作2
注:[]里面的内容表示可要可不要
str.capitalize()
将字符串首字母大写,并返回新的首写字母大写后的字符串
In [67]: str='admin enzo' In [68]: str.capitalize() Out[68]: 'Admin enzo'
str.center(width[,fillchar])
返回一个新的字符串:原本的字符串居中显示在一个长度为width
的字符串中。填充是使用指定的fillchar
(默认是ASCII中的空格' ')完成的。如果width
小于或等于len(s)
,则返回原始字符串
In [83]: str='admin' In [84]: str.center(11,'#') Out[84]: '###admin###'
str.count(sub[,start[,end]])
返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数
In [91]: str='aaaaaaa' In [92]: str.count('a',0,2) Out[92]: 2
str.startswith(suffix[,start[,end]])
判断字符串是否以suffix开始,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,返回True,否则返回False
str.endswith(suffix[,start[,end]])
判断字符串是否以suffix结束,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,返回True,否则返回False
In [93]: str='i am enzo' In [94]: str.endswith('zo') Out[94]: True In [95]: str.endswith('zo',0,5) Out[95]: False
str.find(sub[,start[,end]])
判断sub是否在str中,存在返回索引值,不存在返回-1
str.index(sub[,start[,end]])
与find方法函数功能相同,如果sub不存在时抛出ValueError异常
str.isalnum()
判断是否都是字母或数字
str.isalpha()
判断是否都是字母
In [104]: str='admin' In [105]: str.isalpha() Out[105]: True
str.isdigit()
判断是否都是数字
str.islower()
判断是否都是小写
str.isspace()
判断是否都是英文空格
str.istitle()
判断是不是都是标题(有大小写)
str.isupper()
判断是不是都为大写字母
str.join(seq)
以str作为分隔符,将序列seq中的所有元素合并为一个新的字符串
In [107]: str='123' In [108]: seq='abc' In [109]: str.join(seq) Out[109]: 'a123b123c'
str.replace(old,new[,count])
将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个字符串
In [110]: str='h e llo' In [111]: str.replace(" ","") Out[111]: 'hello'
str.split([sep[,maxsplit]])
以sep字符串作为分隔符对str进行切割,默认为空字符(包括空格、换行(\n)、制表符(\t)等)
maxsplit代表切割maxsplit+1次,默认为-1,即切割所有
In [127]: str='admin enzo tom' In [128]: str.split() Out[128]: ['admin', 'enzo', 'tom'] In [129]: str.split(" ") Out[129]: ['admin', 'enzo', 'tom']
str.strip([chars])
返回一个将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格
In [135]: str='admin enzo tom' In [136]: str.strip('m') Out[136]: 'admin enzo to' In [137]: str.strip('am') Out[137]: 'dmin enzo to'
str.lower()
将大写字母转换为小写
str.upper()
将小写字母转换为大写
str.ljust(width[,fillchar])
返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
width -- 指定字符串长度。
fillchar -- 填充字符,默认为空格
In [138]: str='hello' In [139]: str.ljust(10,'*') Out[139]: 'hello*****'
str.rjust(width[,fillchar])
返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
width -- 指定字符串长度。
fillchar -- 填充字符,默认为空格
练习1:
用户输入一个变量名,判断是否合法(使用字符串常用操作)
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
#!/usr/bin/env python # coding:utf-8 while True: name=raw_input("输入一个变量名:") if name[0].isdigit(): print "变量名不合法(error 1)" else: for i in name[1:]: if not(i.isalnum() or i == "_"): print "变量名不合法(error 2)" break else: print "变量名合法"
执行结果:
练习2:
用户输入一个变量名,判断是否合法(使用string模块)
变量名的命名规则:由数字、字母、_组成并且不能以数字开头
注:
In [48]: import string
In [49]: string.digits
Out[49]: '0123456789'
In [50]: string.letters
Out[50]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#!/usr/bin/env python # coding:utf-8 import string while True: name=raw_input("输入一个变量名:") if name[0] in string.digits: print "变量名不合法(error 1)" else: for i in name[1:]: if not(i in string.digits or i in string.letters or i == "_"): print "变量名不合法(error 2)" break else: print "变量名合法"
执行结果: