新濠天地 > c语言 > 字符串也是一种数据类型,Python的字符串支持多

原标题:字符串也是一种数据类型,Python的字符串支持多

浏览次数:143 时间:2019-09-27

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

Python基础——字符串,python字符串

  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实行退换。

  在Python中,字符串也是一种数据类型。相比较另外数据类型,字符串算是相比较复杂的。为啥呢?因为字符串不独有包罗塞尔维亚(Serbia)语字母,还包罗各个国家的语言文字。既然字符串包涵各个国家语言,因此字符串还论及编码难题。

字符串格式化

  最终贰个广阔的标题是哪些输出格式化的字符串。大家平常会输出接近'亲爱的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() 返回字符串的副本,其中所有基于实例的字符都为大写

  字符串方法还会有非常多广大,这里就不详细例举啦~~~

 

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() 返回字符串的副本,其中所有基于实例的字符都为大写

  字符串方法还大概有众多广大,这里就不详细例举啦~~~

本文由新濠天地发布于c语言,转载请注明出处:字符串也是一种数据类型,Python的字符串支持多

关键词:

上一篇:没有了

下一篇:CLENCORE(公共语言运营时)和FCL(框架类库)