Python基础——字符串

小说:截叶榆叶梅_价格_图片作者:陵帝更新时间:2019-04-27字数:67930

「你如果不愿意配合田世伯跟我爹的意思,承认你是『长生门』掌门的话,坦白跟你说,怕只有……死路一条。」田开疆讲死路二字时,似乎自知理不直气不壮,强人所难的事,他向来不干,要不是田云二家长辈的要求,依田开疆的个性,绝对不会坐视仇天恨被软禁而不管,现在还说要危及人家性命,也难怪田开疆的话会说得如此心虚。

广西哪里有卖红叶石楠苗?

泥犁笑道:“我非佛,我是菩萨!他自去超度,我只管定罪!”泥犁见罪陷术竟对地藏无用,喝道:“先结果了你这假仁假义的!”
朱允?商究谄??叭羰歉竿踉冢?钗换适灞厝徊换嵊幸欤?耸辈煌??坏┮虼巳桥?嘶适迕牵??纱?潮厝桓?眩??硬幌胍虼撕突适迕侵?渖?龈艉摇!

但是,如果掌握的好的话,武道可能压过异能,异能也可能压过武道,并竟,人总是有着差距的。(未完待续。)

  Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

  在Python中,字符串也是一种数据类型。相比其它数据类型,字符串算是比较复杂的。为何呢?因为字符串不仅包含英文字母,还包括各国的语言文字。既然字符串包含各国语言,因此字符串还涉及编码问题。

  在Python 3.x版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。

  示例代码如下:

1 #字符串包含中文
2 >>>print("我爱祖国!I love my country!")
3 我爱祖国!I love my country!

  字符串支持拼接语法。

#拼接字符串
>>>x = "Hello,"
>>>y = "world!"
>>>x + y
"Hello,world!"
>>>print(x + y)
Hello,world!

  在Python中,值被转换为字符串的两种机制:

  一、str(),它会把值转换为合理形式的字符串,方便用户理解;

  二、repr(),它会创建一个字符串,以合法的Python表达式的形式来表示值。

  对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

1 #ord()和chr()
2 >>> ord("A")
3 65
4 >>> ord("")
5 20013
6 >>> chr(66)
7 "B"
8 >>> chr(25991)
9 ""

  如果知道字符的整数编码,还可以用十六进制这么写str:

1 #十六进制——字符串编码
2 >>> "u4e2du6587"
3 "中文"

  两种写法完全是等价的。

  由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。

  如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes

  Python对bytes类型的数据用带b前缀的单引号或双引号表示:

1 #Bytes编码
2 >>>s = b"ACV"
3 >>>print(s)
4 b"ACV"
5 >>>s
6 b"ACV"

  要注意区分"ABC"b"ABC",前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。 

  以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

1 #字符串编码之ASCII、UTF-8
2 >>> "ABC".encode("ascii")
3 b"ABC"
4 >>> "中文".encode("utf-8")
5 b"xe4xb8xadxe6x96x87"
6 >>> "中文".encode("ascii")
7 Traceback (most recent call last):
8   File "<stdin>", line 1, in <module>
9 UnicodeEncodeError: "ascii" codec can"t encode characters in position 0-1: ordinal not in range(128)

   需要注意的是,我们可以将str转换成任意编码的bytes。但是在转换含有中文的str时,不能转换成ascii编码的bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

  反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

#decode()用法
1
>>> b"ABC".decode("ascii") 2 "ABC" 3 >>> b"xe4xb8xadxe6x96x87".decode("utf-8") 4 "中文"

  要计算str包含多少个字符,可以用len()函数:

1 >>> len("ABC")
2 3
3 >>> len("中文")
4 2

  len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数

1 >>> len(b"ABC")
2 3
3 >>> len(b"xe4xb8xadxe6x96x87")
4 6
5 >>> len("中文".encode("utf-8"))
6 6

  在操作字符串时,我们经常遇到str和bytes的互相转换。

  特别地,为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。

字符串格式化

  最后一个常见的问题是如何输出格式化的字符串。我们经常会输出类似"亲爱的xxx你好!你xx月的话费是xx,余额是xx"之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。

  c语言中可以采用%来控制输出的格式,python中也类似。

  示例代码如下:

1 #字符串格式化(%)
2 >>> "Hello, %s" % "world"
3 "Hello, world"
4 >>> "Hi, %s, you have $%d." % ("James", 1000000)
5 "Hi, Michael, you have $1000000."

  %运算符就是用来格式化字符串的

  在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。 

常见的占位符
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

  如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:

1 >>> "Age: %s. Gender: %s" % (25, True)
2 "Age: 25. Gender: True"

  有读者会有疑问,那遇到字符串本身含有%,怎么办呢?

  这个简单,这要转义就OK拉。用%%来表示一个%

1 #%转义
2 >>> "growth rate: %d %%" % 7
3 "growth rate: 7 %"

  字符串格式化的另外一种方法:使用.format()

  它会用传入的参数依次替换字符串内的占位符{0}{1}……,不过这种方式写起来比%要麻烦得多。

  .format()语法如下:

1 #.format语法
2 >>> "Hello, {0}, 成绩提升了 {1:.1f}%".format("小明", 17.125)
3 "Hello, 小明, 成绩提升了 17.1%"

  字符串中既包含小写字母又包含大写字母,如何将大写字母转化为小写字母呢?

  在Python中,字符串中有lower()方法。

#字符串lower()方法
>>>x = "HelLO wOrLd!"
>>>x.lower()
"hello world!"

  字符串还提供了很多方法,比如find()、join()、replace()、split()、strip()、upper()、title()、lstrip()、rstrip()等等。其实,方法是为人类服务的,利用方法可以可以最大化地体现String功能的强大之处。

  find():在字符串中查找子串,并返回子串所在位置的最左端索引。

  join():连接序列中的元素。

  replace():返回某字符串中所有匹配项均被替换后的新字符串。

  split():将字符串分隔成序列。

  strip():返回去除两侧(不包括内部)空格的字符串。

  ……

  ……

字符串方法
方法 描述
string.capitalize() 返回首字母大写的字符串的副本
string.center() 返回一个长度为max(len(string),width)且其中String的副本居中的字符串,两侧使用fillchar(默认为空字符串)填充
string.count(sub[,start[,end]]) 计算子字符串sub的出现次数,可将搜索范围限制为string[start,end]
string.find(sub[,start[,end]]) 返回子字符串sub的第一个索引,如果不存在则返回-1,可以定义字符串的搜索范围为string[start:end]
string.isalnum() 检查字符串是否由数字和字母字符组成
string.isalpha() 检查字符串是否由字母字符组成
string.isdigit() 检查字符串是否由数字组成
string.islower() 检查字符串中所有基于实例的字母是否都为小写
string.isspace() 检查字符串是否由空格组成
string.istitle() 检查字符串中不基于实例的字母后面的基于实例的字符都是大写的,且其他的基于实例的字符都是小写的
string.isupper() 检查是否所有的字符串中的基于实例的字符都是大写
string.join(sequence) 返回其中sequence的字符串元素已用String连接的字符串
string.lower() 返回一个字符串的副本,其中所有基于实例的字符都是小写
string.replace(old,new[,max]) 返回字符串的副本,其中old的匹配项都被new替代,可选择最多替换max个
string.split([sep[,maxsplit]]) 返回字符串中所有单词的列表,使用sep作为分隔符(若没有指定特别的分隔符,默认为空格),可使用maxsplit指定最大切分数
string.strip([chars]) 返回字符串的副本,其中所有chars(默认空格)都从字符串的开头和结尾去除(默认为所有空白字符,如空格,tab和换行符)
string.title() 返回字符串的副本,其中单词都以大写字母开头
string.upper() 返回字符串的副本,其中所有基于实例的字符都为大写

  字符串方法还有很多很多,这里就不详细例举啦~~~

 

编辑:丁侯宗董

发布:2019-04-27 00:00:00

当前文章:http://leetaemin.cn/array/ftqw2jjgoq.html

米径11公分紫叶李什么价格能买到? 贵州金叶榆价格便宜吗? 8公分木瓜树批发基地在哪里? 丛生紫荆规格哪些是常用的? 凌霄花当年扦插的小苗价格是多少? 50公分蜀桧价格多少钱 1.3元一棵上车价 曝光一组红枫树的高清照片,在盆友圈疯传的红枫原来这么美 蔷薇花不仅是花神,而且也是重要的食材之一哦!

93625 43856 64911 28285 89650 74423 31518 36320 60540 51931 21828 94205 24691 67762 34306 16394 67742 67939 98831 93349

我要说两句: (0人参与)

发布