好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python--字符串

字符串:

什么是字符串:

在Python中,使用单引号或者双引号括起来的,就是字符串。 字符串也可以使用六个单引号或者六个双引号括起来。 在 Python3 中,字符串分为两种类型,第一种是 str ,是 unicode 字符串,第二种是 bytes ,就是经过编码后的字符串,是一种字节码,适用于保存在磁盘上或者在网络上传输。

字符串拼接:

使用加号的形式:
a = ‘hello‘ b = ‘world‘ c = a + b print(c) 
使用格式化的形式:
a = ‘___‘ b = ‘abc‘ c = "%s%s%s" % (a,b,a) 

字符串格式化:

字符串格式化,是将一个字符串中某些经常可能会改变的地方,提取出来,用一些占位符占位,后面再通过格式化的方式填充进去。格式化字符串有两种方式,第一种方式是使用 %s 的形式,第二种是使用 format 方法。下面依次来讲解一下:

1. 使用%的形式:
course = ‘python‘ school = ‘zhiliao‘ intro = "I love %s,I study in %s" % (course,school) 

以上就是使用 % 的形式进行补充。当然针对不同的数据类型,应该使用不同的格式化: 

字符串:使用 %s 。  整形:使用 %d 。  浮点类型:使用 %f 。如果想要指定小数点后的位数。可以使用 %.nf 来表示,n为1表示一位小数,n为2表示2为小数,依次类推。 2. 使用format函数的形式: 使用位置参数占位符,示例代码如下:
greet = "I love {},I study in {}".format(‘python‘,‘zhiliao‘) 
使用关键字参数占位符,示例代码如下:
greet = "I love {arg1},I study in {arg2}".format(arg1=‘python‘,arg2=‘zhiliao‘) 

字符串下标:

下标操作:字符串实际上就是跟一个容器一样,也可以跟列表和元组一样进行下标操作。 示例代码:

username = ‘zhiliao‘ print(username[0]) print(username[1]) print(username[2]) print(username[-1]) # 从后面开始 

切片操作:

起始位置:切片操作包括开始位置。负数从后面开始,最后一个元素是-1。 结束位置:切片操作包括的是结束位置前面的一个元素。负数从后面开始,最后一个元素是-1。 步长:代表每次取值的跨度。如果没有设置,默认为1。正数表示从左到右,负数表示从右到左。 逆序:从后面往前开始走。所以起始位置应该是-1,然后要往前面走,那么应该指定步长为-1,然后要取到所有的值,那么结束位置应该留空。

字符串常见操作:

find :返回查找字符串的下标位置。如果返回的是-1,代表的是没有查找到该字符串。 rfind 是从右边到左边。 index :和 find 非常类似。只不过当查找不到这个字符串的时候,不是返回-1,而是抛出一个异常。 rindex 是从右边开始查找。 len :获取字符串字符的长度。 count :用来获取子字符串在原来字符串中出现的次数。 replace :新创建一个字符串,把原来字符串中的某个字符串替换为你想要的字符串。 split :按照给定的字符串进行分割。返回的是一个列表。 startswith :判断一个字符串是否以某个字符串开始。 endswith :判断一个字符串是否以某个字符串结束。 lower :将字符串全部改成小写。 upper :将字符串全部改成大写。 strip :将字符串左右的空格全部去掉。 lstrip :删除字符串左边的空格。 rstrip :删除字符串右边的空格。 partition :从 str 出现的第一个位置起,把字符串 string 分成一个3元素的元组 (string_pre_str,str,string_post_str) ,如果 string中不包含 str ,则 string_pre_str == string 。 isalnum :如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True ,否则返回 False 。 isalpha :如果 string 至少有一个字符并且所有字符都是字母则返回 True ,否则返回 False 。 isdigit :如果 string 只包含数字则返回 True 否则返回  False 。 isspace :如果字符串中只包含空格,则返回 True ,否则返回 False 。 format :格式化字符串。

转义字符:

转义字符 描述 \在行尾 续行符 \n 换行符 \‘ 单引号 \" 双引号 \t 制表符 \ 反斜杠

原生字符串:

原始字符串不会对字符串中任何字符进行转义,你写了什么东西,这个字符串就是什么,达到一种所见即所得的效果。 语法: r‘xxx‘ 。

字符串编码和解码:

在 Python3 中,默认写的字符串都是 unicode 类型, unicode 是一个万能的字符集,可以存储任意的字符,但是 unicode 字符串只能在内存中存在,不能在磁盘和网络间传输数据,如果要在文件或者网络间传输数据,必须要将 unicode 转换为 bytes 类型的字符串,因此我们在写代码的时候有时候要对 unicode 和 bytes 类型字符串进行转换,转换的函数如下: 

encode(‘utf-8‘) :将 unicode 编码成 bytes 类型,并且编码方式采用的是 utf-8 。  decode(‘utf-8‘) :将 bytes 解码成 unicode 类型,并且解码的方式采用的是 utf-8 。  utf-8 是编码的方式,还有其他编码方式,比如 gbk 、 ascii 等。

Unicode字符串(选读):

什么是 unicode 字符串:因为历史原因,在 Python2 版本中,默认的字符串编码采用的是 ascii 编码(Python早于unicode发布)。而 ascii 编码是采用 1个字节 来存储,也就是 8位 ,最多只能表示 2^8 也即 256 个字符,这在全世界远远是不够的,单拿中国汉字来讲,常用的汉字也有 6000 多个。因此,为了满足全球各个国家不同语言的编码需求,全球统一码联盟提出了 unicode 编码。 unicode 编码默认情况下会采用 2个字节 存储字符(UCS-2),这样能够存储的 2^16 也即 65536 个字符,但也还是不能满足全世界所有语言,因此后来又补充了用 4个字节 存储(UCS-4),这就可以包含全球所有的文字了。 unicode 与其他编码的区别: unicode 是一个字符集,相当于一个字典,全世界所有的字符或者标点符号都对应一个数字。以后要在计算机中显示这个字符的时候,就使用 unicode 字符集中对应的那个数字就可以了。 utf-8 、 gbk 、 latin-1 、 ascii 都是具体的编码实现。 因为 unicode 中,将大部分的字符都用2个字节存储,但是对于英文字母,比如 a ,其实他只需要一个字节就够了,如果都用2个字节存储,那么比较浪费硬盘空间或者浪费流量,因此 unicode 并不适合用来存储。而 utf-8 则是 unicode 的一种实现方式,他默认会使用 8 位,也就是一个字节存储,如果存储不下了,则会动态的改变大小用来存储字符。因此 utf-8 比较节省空间,并且也可以包含全世界所有的字符。 在 Python2 中如何定义 unicode 字符串:在字符串的前面加上一个 u ,比如 u‘中国‘ 。 unicode 可以解决什么问题:在出现乱码或者编码错误的时候可以解决问题。 如何将其他形式的编码字符串解码为 unicode 字符串:
greet = ‘你好‘ greet_unicode = greet.decode(‘utf-8‘) 
如何将 unicode 编码成其他编码字符串:
greet = u‘你好‘ greet_utf8 = greet.encode(‘utf-8‘) 

之前看到的

import sys reload(sys) sys.setdefaultencoding(‘utf-8‘) 

的作用是什么:设置字符串在转换编码时候的默认编码。 比如使用函数 unicode 将一个 str 字符串转换成 unicode 字符串,那么默认使用的就是 ascii 编码。如果你设置了以上的代码,那么将使用 utf-8 编码。

#coding: utf-8 是用来干什么的:用来设置 Python 解释器在读取这个源代码文件时候使用的编码。在 python2 中默认使用 ascii ,所以需要改变一下文件的默认编码。而在 python3 中,默认使用了 utf-8 ,则可以不要更改文件编码就可以支持中文了。

查看更多关于python--字符串的详细内容...

  阅读:28次