设为首页 收藏本站
查看: 1487|回复: 0

[经验分享] Python学习(四)数据结构 —— str

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-30 11:00:30 | 显示全部楼层 |阅读模式
Python 字符串 str
  
  本章大致介绍了 Python 的字符串类型 str,包括字符串的赋值及转义、字符串运算符、字符串格式化输出 以及 一些字符串的内建函数等。
  

字符串赋值及转义
  我们可以使用引号来创建字符串(单引号、双引号)
  字符串需要使用特殊字符时,python用反斜杠(\)转义字符,注意引号和换行



1 s1 = "Hello \"World\""            # 可用""  注意引号的转义
2 s2 = 'Welcome to Fees\'s land'    # 也可用''  注意引号的转义
3 print(s1)
4 print(s2)
5 print("a\n    b")                 # \n表示换行 注意空格保留
  

字符串运算符
  字符串在python中的使用很方便,简单介绍如下几个:
  in; not in  简单判断字符串是否包含字符



1 s = "python study"
2 print("p" in s)                    # 若字符包含在字符串中,返回True
3 print("p" not in s)                # 字符不包含在字符串中,返回True
4 print("tho" in s)                  # 多字符寻找
5 print("P" in s)                    # 区分大小写
6 print("n s" in s)                  # 注意空格
7 print("n  s" in s)                 # 返回False
  字符串拼接、重复输出



1 print('p'+'y'+'t'+'h'+'o'+'n')      # + 做字符串的拼接
2 print("p"*5)                        # * 做字符串重复输出
3 print(3*"hi ")                      # 注意空格,字符串最后一个字符仍为空格
  取出字符串的某个字符



1 s = "abc de"
2 print(s[0])                        # 从0开始计算
3 print(s[3])                        # 空格
4 # print(s[6])                      # 会报错 out of range
  取出部分字符,可设置截取起始及截止,可设置步长,步长可设置为负数,表示反向截取;具体参考下例来理解



1 s = "0123456789"
2 print(s[0:0])
3 print(s[0:1])
4 print(s[0:2])                    
5 print(s[0:6:2])                    # 从下标为0的字符 隔2个
6 print(s[0:7:2])            
7 print(s[3:0:-1])                   # 反向输出
8 print(s[3:2:-1])            
9 print(s[7:0:-2])                   # 反向输出,从下标为7的字符开始
10 print(s[6:0:-2])            
11 print(s[::-1])                     # 反向输出全部
  输出字符串长度  len(s)



1 s = "python study"                    # 空格为一个字符
2 print(len(s))
3 print(len("   "))                     # 3个空格 返回3
4 print(len("python\nstudy"))           # 换行符为一个字符
  

字符串格式化输出
  Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但基本用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
  在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。详细参考 python字符串相关参考



1 name = "fee"
2 age = 18
3 print("My name is %s, I'm %d year old." %(name,age))                # 老的表示方法 均可使用
4 print('The value of PI is approximately %.3f.' %(3.1415926))        # 表示取小数点后三位
  另外,可用 str.format() 函数来格式化输出;字符串的format函数可以接受的参数个数不限,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
  通过 str.format() 可以将list、tuple、dict 传值,比较灵活;通过对象定位输出也比较方便,且不易出错(class 的例子看不懂可看完 class 对象后再来看)



1 name = "fee"
2 age = 18
3 print("My name is {}, I'm {} year old.".format(name,age))                    # 2.6后出现的方法 str.format() ;2.6不能为 {},2.7 可以
4 print("My name is {1}, I'm {0} year old.".format(age,name))                    # {0}对应age;{1}对应name
5 print("My name is {name}, I'm {age} year old.".format(name="fei",age=20))    # 关键字参数可自定义
6 print("My name is {name}, I'm {age} year old.".format(name=name,age=age))    # 关键字跟变量是不同的
7
8 class User():                             # 构造对象
9     def __init__(self,name,age):            
10         self.name=name
11         self.age=age
12     def print_name(self):
13         print("My name is {self.name}.\nI'm {self.age} year old.".format(self=self))    # 通过对象属性可准确定位输出
14 user1 = User("Fee",18)                    # 对象实例
15 user1.print_name()                        # 调用对象方法
  
  

字符串内建函数
  仅列出常用函数。详细参考 python字符串相关参考

    str.lower()    str.upper()    str.capitalize()       str.title()



1 s = "Python STUDY"
2 s.lower()                # Return a copy of the string with all the cased characters [4] converted to lowercase.
3 print(s)                 # 不改变s本身
4 print(s.lower())        
5 print(s.upper())         # Return a copy of the string with all the cased characters converted to uppercase.
6 print(s.capitalize())    # Return a copy of the string with its first character capitalized and the rest lowercased.
7 print(s.title())         # Return a titlecased version of the string where words start with an uppercase character and the remaining characters are lowercase.
8 print(s.swapcase())      # Return a copy of the string with uppercase characters converted to lowercase and vice versa.


    str.isalnum()    str.isalpha()    str.isdigit()    str.isspace()    str.islower()    str.isupper()    str.istitle()   



1 a = "012"
2 b = "abc"
3 c = "abc012"
4 d = "Abc012"
5 e = "ABC012"
6 f = ""
7 g = "      "
8 h = "Python Study"
9 i = "It's funny."
10 print(c.isalnum(),b.isalnum(),f.isalnum())        # 是否全是字母和数字,并至少有一个字符
11 print(b.isalpha(),c.isalpha(),f.isalpha())        # 是否全是字母,并至少有一个字符
12 print(a.isdigit(),c.isdigit(),f.isdigit())        # 是否全是数字,并至少有一个字符
13 print(b.islower(),c.islower(),f.islower())        # str中的字母是否全是小写
14 print(e.isupper(),d.islower(),f.islower())        # str中的字母是否全是大写
15 print(h.istitle(),i.istitle(),f.istitle())        # str是否是首字母大写的,指的是每个单词首字母大写
16 print(g.isspace(),a.isspace(),f.isspace())        # 是否全是空白字符,并至少有一个字符


    str.startwith(prefix[,start[,end]])        str.endwith(suffix[,start[,end]])



1 s = "Python Study"
2 print(s.startswith("Py"),s.startswith("py"),s.startswith("St",7))     # str.startwith(prefix[,start[,end]]) 是否以prefix开头; 注意大小写、空格
3 print(s.endswith("dy"),s.endswith(" dy"),s.endswith("Python",0,6))    # str.endwith(suffix[,start[,end]]) 是否以suffix结尾


    str.index(sub[, start[, end]])       str.rindex(sub[, start[, end]])   

    str.find(sub[, start[, end]])         str.rfind(sub[, start[, end]])   
  str.index 和 str.find 的区别是,index 找不到会报错;find 找不到返回-1



1 s = "abbccaacad"
2 print(s.index("a"))             # 输出第一次出现"a"的下标
3 print(s.index("aa"))            # 输出第一次出现"aa"的下标
4 print(s.index("a",6,9))         # 从下标6算起,输出第一次出现"a"的下标
5 print(s.rindex("a"))            # 从结尾开始搜索
6 # print(s.index("aaa"))         # 找不到会报错
7 # print(s.index("a",7,8))       # 同样报错
8 print()
9 print(s.find("a"))              # find用法基本同index 但没有找到会返回-1  而不是报错
10 print(s.find("aa"))               
11 print(s.find("a",6,9))        
12 print(s.rfind("a"))             # 从结尾开始搜索   
13 print(s.find("aaa"))            # find 找不到不会报错,返回 -1
14 print(s.find("a",7,8))            


    str.count(sub[, start[, end]])



1 s = "abbccaacad"
2 print(s.count("a"))                 # "a"出现的次数
3 print(s.count("ca"))                # "ca"出现的次数
4 print(s.count("aaa"))               # 出现次数为0
  

    str.replace(old, new[, count])



1 s = "abAccaacad"
2 print(s.replace("a","x"))              # 用"x"替换"a"
3 s_r = s.replace("a","")                # 相当于删除所有的"a"
4 print(s_r,len(s),len(s_r))
5 print(s.replace("a","x",2))            # 仅替换2次
6 print(s.replace("ca","xx"))            # 用"xx"替换"ca"
7 print(s.replace("a ","x"))             # 无匹配,无替换,注意空格
  

    str.strip([chars])    str.lstrip([chars])    str.rstrip([chars])
  去头尾字符,缺省为删除空格,注意的是头尾去除按每一个字符来算,非 prefix 或 suffix



1 s = "  hello hi "
2 s_strip = s.strip()                  # 去前后空格
3 s_lstrip = s.lstrip()                # 去左边空格
4 s_rstrip = s.rstrip()                # 去右边空格
5 print(s_strip  + 'x')
6 print(s_lstrip + 'x')
7 print(s_rstrip + 'x')
8 print(len(s),len(s_strip),len(s_lstrip),len(s_rstrip))
9 print(s.strip(' h'))                 # 头尾去空格或者h
10 print(s.strip('hi '))                # 头尾去h、i或者空格


    str.split(sep=None, maxsplit=-1)
  根据 sep 来分割字符串 str,会返回一个list,具体理解详见下面例子



1 s = "a b c"
2 print(s.split())                    # 返回list,可直接输出,默认以空格分割
3 s = "a,b,c"
4 print(s.split())                    # 无法分割,为一个元素
5 print(s.split(','))                 # 设置分割符
6 s = "a,b,,c"
7 print(s.split(','))                 # 分割符补位空格,会输出空元素
8 s = "a b   c"
9 print(s.split())                    # 可做多个空格的分割,无空元素
10 print(s.split(' '))                 # 会输出空元素
  

    str.join(iterable)
  用str来链接序列的元素,返回的是一字符串,(例子看不懂可看完后续list tuple set后再来看)



1 s = "-"
2 print(s.join(["P","y","t","h","o","n"]))    # list有序
3 print(s.join(("P","y","t","h","o","n")))    # tuple有序
4 print(s.join({"P","y","t","h","o","n"}))    # set无序
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145302-1-1.html 上篇帖子: 二次指数平滑预测法 Python实现 下篇帖子: 基于Python的机器学习实战:KNN
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表