Python(1) 字符串操作

本文详细介绍Python中字符串的各种操作方法,包括索引、切片、内置函数如find和replace的使用,以及循环和条件判断的应用。此外,还介绍了如何处理字符串中的空白字符、执行字符串测试、进行字符编码转换等实用技巧。
摘要由CSDN通过智能技术生成
字符类型:

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 = ' <a href=" http://tieba.baidu.com " name="tj_trtieba" class="mnav">贴吧</a>'
    中的“贴吧”提取出来
方法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、付费专栏及课程。

余额充值