Python字符类型

字符类型:

s = “hello” ==> hello
s[0]  ==>h   //数组
s[-1] ==>o     //python独有,负数表示倒取字符串
s[1:4]   ==>ell    //从s[1]开始取值,到s[4]前结束(不含s[4])
s[1:-1]  ==>ell    //从s[1]开始取值,到s[-1]结束
s[1:]   ==>ello   //从s[1]开始取,直到结束
s[:2]   ==>he    //从s[0]到s[2]之前结束(不含s[2])
str = ’0123456789′
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串   怎么理解
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取,具体啥意思没搞明白? 等同于:print str[-1:-5:-1]
s = "123456789"
print str[0:10:2]  2为步长
print str[4:1:-1] 当反着取得时候需要填-1,表示第一个大、第二个小

字符类型内置函数:

find() 返回数组内从左取第一个被查询值的坐标(索引功能)
rfind() 返回数组内从右取第一个被查询值得坐标
python中find的函数的功能是查找指定的字符串并返回该字符串的起始位置。
函数原型:find(str, pos_start, pos_end)
参数如下:
str:被查找“字符串”
pos_start:查找的首字母位置(从0开始计数。默认:0)
pos_end: 查找的末尾位置(默认-1)
返回值:如果查到:返回查找的第一个出现的位置。否则,返回-1。

s.find("e")   ==> 1     
s.find("l")   ==>2      //取得是第一个“l”,字符串也一样
s2 = "Python's own help system"
s2.find(" ")   ==>8  //返回空格的坐标
s2[9:]    ==own help system    //返回s[9]直到结束的字符串

count(substr, [start, [end]]) #计算substr在S中出现的次数
replace(oldstr, newstr, [count]) #把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换

In [42]: s = "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
Out[42]: 'aaaaaaaaaaaaaaaaaaaaaaaaaaa'
In [43]: s.replace('aa','b',2).count('a')
Out[43]: 23

粘贴语法 %paste

for循环 #注意语法格式,循环体内的语句必须有缩进,且必须缩进数量一致

下面 Case1和Case 中count的实际作用是不一样的
Case1:
count = 0
for a in s: 
    print a
    count +=1

Case2: 比对Case1,没有对齐的情况

count = 0
for a in s:
    pirnt a
count +=1

for 嵌套循环 //注意格式的不同

for a in s:
     print a
     for b in s:
          print b

切割函数split(”字符”)
如果目标字符串里有双引号,外面用单引号,或相反

s = "hello world!"
In [38]: s.split('l')
Out[38]: ['he', '', 'o wor', 'd!']   #注意第二个“l”也被劈开,但用空来代替

decode方法,字符转换
方法:s.decode(“utf-8”)
utf-8和GBK的却别:utf-8 中文3个字节 英文1个字节 各个语言有单独的code在里面,不需单独语言包
GBK是 国标 汉字两个字节,而且只支持中文简体,GBK包含GB2312

s = "你"
In [39]: %paste
s2 = "你"
In [40]: s2 
Out[40]: '\xe4\xbd\xa0'    #此处输出的是16进制编码
print s.decode("utf-8").encode("gbk")
       如果是printf 会自动转Unicode,如果是字符串比较就得转了

小练习:
将字符串 s = ‘贴吧
中的“贴吧”提取出来
方法1:利用find方法,
方法2:使用split切割函数分割
print s.split(“>”)[1].split(“<”)[0].decode(“utf-8”)

—————————————-下午————————————–

strip() //删除两端的指定字符,括号里面的东西本身部分先后顺序
去两边空格和回车:str.strip()
去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串:str.strip(‘d’),相应的也有lstrip,rstrip

str=' python String function '
print '%s strip=%s' % (str,str.strip())
str='python String function'
print '%s strip=%s' % (str,str.strip('d'))

小练习:删除字符串d中的空格

d = "config = 5"
result = ""
for a in d.split(' '):
 result += a
print result

len()获取字符串长度
字符串的测试函数,这一类函数在string模块中没有,这些函数返回的都是bool值:

S.startwith(prefix[,start[,end]]) #是否以prefix开头 
S.endwith(suffix[,start[,end]])  #以suffix结尾 
S.isalnum()  #是否全是字母s和数字,并至少有一个字符 
S.isalpha()  #是否全是字母,并至少有一个字符 
S.isdigit()  #是否全是数字,并至少有一个字符 
S.isspace() #是否全是空白字符,并至少有一个字符 
S.islower() #S中的字母是否全是小写 
S.isupper() #S中的字母是否便是大写 
S.istitle() #S是否是首字母大写的

小练习
提取字符串 s = “2afdsag123dsaba123” 中的所有数字,结果”2 123 123”

s = "2afdsag123dsaba123"
s1 = ""
t = False
for a in s:
    if a.isdigit():
    s1 +=a
    t = True
    if not a.isdigit() and t == True:
      t = False
      s1 += " "
print s1 

转义字符
s1 = r”abc\n” r是raw原始数据
s2 = u”abc\n” 同s2 = “abc\n” u是unicode

if分支判断:

s = 2
if s == 1:
    print "A"
elif s == 2:
    print "B"
else:
    print "C"

in包含关系
s = “hello”
“e” in s
True //输出结果

小练习:判断当前输入的一个字符串是否是手机号

set = "13,18,17,15"    //以什么开头
a =raw_input("Please input:")
if len(a) == 11 and a.isdigit() and a[:2] in set1:
    print "Success!"
else:
    print "error!"

小练习2:删除字符串中s中的左右空格,类似实现strip的功能

s="    12  35a "
start = 0
end = 0
for a in s:
    if a== ''
    start += 1
else
  break
for a in s[::-1]:
    if a== ''
        end += 1
    else
        break
print s[start:len(s)- end]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值