美文网首页我的Python自学之路
Python基础(12)-字符串数据类型及其所具备的方法

Python基础(12)-字符串数据类型及其所具备的方法

作者: 皓月的简书 | 来源:发表于2017-02-19 22:00 被阅读0次

    12.1-创建字符串:

    第一种方式:

    >>> s = "hello world"
    >>> type(s)
    <class 'str'>
    

    第二种方式:

    >>> s = str("hello world")
    >>> type(s)
    <class 'str'>
    

    12.2-字符串(str)内部方法介绍:

    capitalize(self):

    说明:首字母变大写。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc"
    
    # capitalize() 表示首字母变大写
    s2 = s1.capitalize()
    print(s2)
    

    运行结果:

    casefold(self):

    说明:字符串变小写,Unicode 编码中凡是有对应的小写形式的,都会转换。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "ABC"
    
    # casefold() 表示字符串变小写
    s2 = s1.casefold()
    print(s2)
    

    运行结果:

    center(self, width, fillchar=None):

    说明:内容居中, width 定义总长度,fillchar 表示空白处填充内容,默认无。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc"
    
    # 内容居中,总长度为 20 ,填充内容为 "*"
    s2 = s1.center(20,"*")
    print(s2)
    

    运行结果:

    count(self, sub, start=None, end=None):

    说明:查看指定子序列在字符串中出现的次数, sub 表示要指定的子序列, start 指定开始搜索的位置,默认从第一个字符开始,第一个字符索引位置为0, end 指定结束搜索的位置,默认为最后一位。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查看 "b" 在这个字符串里出现的次数
    s2 = s1.count("b")
    print(s2)
    
    # 指定范围,查看 "b" 在这个字符串里出现的次数
    s3 = s1.count("b",2,5)
    print(s3)
    

    运行结果:

    encode(self, encoding='utf-8', errors='strict'):

    说明:以指定的编码格式编码字符串,编码后的字符串是一个 bytes 对象, encoding 表示要使用的编码,默认为 utf-8errors 指定不同的错误处理方案。

    注:由于Python3中字符串没有 decode() 方法,所以可以使用 bytes 对象的 decode() 方法来进行解码。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "中文"
    
    s2_utf = s1.encode("utf-8")
    print("utf-8编码:",s2_utf)
    
    s3_gbk = s1.encode("gbk")
    print("gbk编码:",s3_gbk)
    
    s4_utf = s2_utf.decode("utf-8")
    print("utf-8解码:",s4_utf)
    
    s5_gbk = s3_gbk.decode("gbk")
    print("gbk解码:",s5_gbk)
    

    运行结果:

    endswith(self, suffix, start=None, end=None):

    说明:判断字符串是否以xxx结尾,如果是以xxx结尾返回 True ,否则返回 Falsesuffix 表示指定后缀 start 表示开始的位置, end 表示结束的位置。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查看这个字符串是否以 "abc" 结尾
    s2 = s1.endswith("abc")
    print(s2)
    
    # 指定范围,查看这个字符串是否以 "c" 结尾
    s3 = s1.endswith("c",0,6)
    print(s3)
    
    # 指定范围,查看这个字符串是否以 "c" 结尾
    s4 = s1.endswith("b",0,6)
    print(s4)
    

    运行结果:

    expandtabs(self, tabsize=8):

    说明:将字符串中的 tab 符号(即制表符 \t ),转换成空格, tabsize 表示将字符串中的一个 tab 符号转换为多少个空格,默认为8个。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc\tabc"
    
    # 将一个 tab 符号 (即制表符 \t ) 转换为 20 个空格
    s2 = s1.expandtabs(20)
    print(s2)
    

    运行结果:

    find(self, sub, start=None, end=None):

    说明:在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否则返回-1, sub 表示指定的子序列, start 表示开始的位置, end 表示结束的位置。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查找 "c" 所在的位置(从左往右查找,找到第一个后就不会往下继续查找了)
    s2 = s1.find("c")
    print(s2)
    
    #指定范围查找 "c" 所在的位置
    s3 = s1.find("c",3,6)
    print(s3)
    
    # 如果 "d" 不存在字符串中,就会返回 -1
    s4 = s1.find("d")
    print(s4)
    

    运行结果:

    format(*args, **kwargs):

    说明:字符串格式化,动态参数。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 如果不设置指定位置,按默认顺序("{}" 相当于占位符)
    s1 = "Hello {} , Hello {}"
    s2 = s1.format("World","China")
    print(s2)
    
    # 如果设置指定位置,可以不按顺序
    s3 = "Hello {1} , Hello {0} , Hello {1}"
    s4 = s3.format("World","China")
    print(s4)
    

    运行结果:

    format_map(self, mapping):

    说明:字符串格式化,和 format(*args, **kwargs) 类似,只不过 mapping 是一个字典对象。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    dic = {
        "name" : "L",
        "age" : 18
    }
    s1 = "hello {name} , age {age}".format_map(dic)
    print(s1)
    

    运行结果:

    index(self, sub, start=None, end=None):

    说明:与 find() 类似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否则报错,sub 表示指定的子序列, start 表示开始的位置, end 表示结束的位置。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查找 "d" 的位置,如果没有找到报错
    s2 = s1.index("d")
    print(s2)
    

    运行结果:

    isalnum(self):

    说明:判断字符串是否是字母和数字的任意组合,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 是 字母 和 数字 的任意组合,返回 True
    s1 = "abcabc123"
    s2 = s1.isalnum()
    print(s2)
    
    # 只包含字母或数字 返回 True
    s3 = "abc".isalnum()
    print(s3)
    s4 = "123".isalnum()
    print(s4)
    
    # 如包含空格、小数点等符号则返回 False
    s5 = "abc 123".isalnum()
    print(s5)
    s6 = "abc123.".isalnum()
    print(s6)
    

    运行结果:

    isalpha(self):

    说明:判断字符串是否只由字母组成,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 只包含 字母 返回 True
    s1 = "abcabc"
    s2 = s1.isalpha()
    print(s2)
    
    # 包含 字母 和 数字 返回 False
    s3 = "abc123".isalpha()
    print(s3)
    

    运行结果:

    isdecimal(self):

    说明:判断字符串是否只包含十进制数字,如果是返回 True ,否则返回 False ,定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 只包含 十进制数字 返回 True
    s1 = "123".isdecimal()
    print(s1)
    
    # 包含 其它 返回 False
    s2 = "root123".isdecimal()
    print(s2)
    

    运行结果:

    isdigit(self):

    说明:判断字符串是否只由数字组成,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 只包含 数字 返回 True
    s1 = "123".isdecimal()
    print(s1)
    
    # 包含 其它 返回 False
    s2 = "root123".isdecimal()
    print(s2)
    

    运行结果:

    isidentifier(self):

    说明:判断字符串是否为合法的标识符,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "statr".isidentifier()
    print(s1)
    
    s2 = "start_123".isidentifier()
    print(s2)
    
    s3 = "123start".isidentifier()
    print(s3)
    
    s4 = "start#".isidentifier()
    print(s4)
    

    运行结果:

    islower(self):

    说明:判断字符串中所有字母是否为小写,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 都是小写,返回 True
    s1 = "abcabc".islower()
    print(s1)
    
    # 包含数字、中文,但是字母为小写,返回 True
    s2 = "abc123中文".islower()
    print(s2)
    
    # 只要有一个字母为大写,则返回 False
    s3 = "aBc".islower()
    print(s3)
    

    运行结果:

    isnumeric(self):

    说明:字符串是否只由数字组成。这种方法是只针对unicode对象,定义一个字符串为Unicode,只需要在字符串前添加 'u' 前缀即可。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 只由 数字 组成 返回 True
    s1 = u"123456".isnumeric()
    print(s1)
    
    # 包含 数字 和 字母 返回 False
    s2 = u"abc123".isnumeric()
    print(s2)
    

    运行结果:

    isprintable(self):

    说明:判断字符串中所有的字符是否为可打印字符或字符串为空,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 可打印,返回 True
    s1 = "abc123".isprintable()
    print(s1)
    
    # 字符串为空,返回 True
    s2 = "".isprintable()
    print(s2)
    

    运行结果:

    isspace(self):

    说明:判断字符串是否全部为空格,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 全部为 空格 返回 True
    s1 = "             ".isspace()
    print(s1)
    
    #不全部为 空格 返回 False
    s2 = "abc    123".isspace()
    print(s2)
    

    运行结果:

    istitle(self):

    说明:判断字符串是否为标题,如果是返回 True ,否则返回 False ,所有首字母大写的为标题。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 为 标题 返回 True
    s1 = "Abc".istitle()
    print(s1)
    
    # 为 标题 返回 True
    s2 = "Abc Abc".istitle()
    print(s2)
    
    # 不为 标题 返回 False
    s3 = "ABc".istitle()
    print(s3)
    

    运行结果:

    isupper(self):

    说明:判断字符串中的所有字符是否为大写,如果是返回 True ,否则返回 False

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 字母 全部为 大写 返回 True
    s1 = "ABCABC".isupper()
    print(s1)
    
    # 字母 和 数字 组合 ,字母为大写 返回 True
    s2 = "ABC123".isupper()
    print(s2)
    
    # 字母 其中有小写 返回 False
    s3 = "ABCabc".isupper()
    print(s3)
    

    运行结果:

    join(self, iterable):

    说明:用指定字符串,将可迭代对象拼接起来并生成一个新的字符串, iterable 表示接受可迭代的对象。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    l1 = ["abc","def","ghi"]
    
    # 这个方法会去循环 "l1" 中的每一个元素,让元素与元素之间通过 "_" 拼接起来,并变成字符串
    s1 = "_".join(l1)
    print(s1)
    

    运行结果:

    ljust(self, width, fillchar=None):

    说明:内容左对齐, width 定义总长度,fillchar 表示右侧空白处填充内容,默认无。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 内容左对齐,总长度为 20 ,填充内容为 "_"
    s2 = s1.ljust(20,"_")
    print(s2)
    

    运行结果:

    lower(self):

    说明:字符串变小写,对 ASCII 编码的字母有效。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "ABC"
    
    # lower() 表示字符串变小写
    s2 = s1.lower()
    print(s2)
    

    运行结果:

    lstrip(self, chars=None):

    说明:截掉字符串左侧的空格或指定字符, chars 表示指定截掉的字符,默认为空格。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    #截掉左侧空格
    s1  = "       abcabc"
    s2 = s1.lstrip()
    print(s2)
    
    # 截掉左侧指定字符 "*"
    s3 = "***abcabc"
    s4 = s3.lstrip("*")
    print(s4)
    

    运行结果:

    maketrans(self, *args, **kwargs):

    说明:创建字符映射的转换表,以供 translate 方法使用,如果接收两个参数,字符串的长度必须相等,而且两个参数需要形成映射,第一个参数是字符串表示需要转换的字符,第二个参数也是字符串表示转换后的字符。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 根据 maketrans() 创建一个转换表
    dic = str.maketrans("ac","xl")
    
    # 根据 translate() 进行转换
    s2 = s1.translate(dic)
    print(s2)
    

    运行结果:

    partition(self, sep):

    说明:根据指定分隔符将字符串分割为前、中、后三部分,并返回一个元组, sep 表示指定分隔符。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc def ghi"
    
    # 根据 "def" 进行分割为三部分,并生成一个元组
    s2 = s1.partition("def")
    print(s2)
    print(type(s2))
    

    运行结果:

    replace(self, old, new, count=None):

    说明:将字符串中的字符进行替换, old 表示将被替换的字符, new 表示替换后的字符, count 表示替换的次数,默认全部替换。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabcabc"
    
    #将 "ab" 全部替换为 "cc"
    s2 = s1.replace("ab","cc")
    print(s2)
    
    #从左侧开始替换,只替换两个
    s3 = s1.replace("ab","cc",2)
    print(s3)
    

    运行结果:

    rfind(self, sub, start=None, end=None):

    说明:和 find() 类似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否则返回-1,只不过是从右侧开始查找。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查找 "c" 所在的位置(从右往左查找)
    s2 = s1.rfind("c")
    print(s2)
    
    #指定范围查找 "c" 所在的位置
    s3 = s1.rfind("c",3,6)
    print(s3)
    
    # 如果 "d" 不存在字符串中,就会返回 -1
    s4 = s1.rfind("d")
    print(s4)
    

    运行结果:

    rindex(self, sub, start=None, end=None):

    说明:和index() 类似,在字符串中查找指定子序列的位置,如果存在返回指定子序列的索引值,否则报错,只不过是从右侧开始查找。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabcabc"
    
    # 查找 "d" 的位置,如果没有找到报错(从右侧开始查找)
    s2 = s1.rindex("d")
    print(s2)
    

    运行结果:

    rjust(self, width, fillchar=None):

    说明:内容右对齐, width 定义总长度,fillchar 表示左侧空白处填充内容,默认无。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 内容右对齐,总长度为 20 ,填充内容为 "_"
    s2 = s1.rjust(20,"_")
    print(s2)
    

    运行结果:

    rpartition(self, sep):

    说明:和 partition() 类似,根据指定分隔符将字符串分割为前、中、后三部分,并返回一个元组,只不过是从右侧开始查找分隔符。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc abc ghi"
    
    # 根据 "abc" 进行分割为三部分,并生成一个元组(从右侧开始查找分隔符)
    s2 = s1.rpartition("abc")
    print(s2)
    print(type(s2))
    

    运行结果:

    rsplit(self, sep=None, maxsplit=-1):

    说明:从右到左通过指定分隔符对字符串进行切片,并返回一个列表, sep 表示指定分割符,默认为空格, maxsplit 表示分割次数,默认全部分割。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc_def_ghi"
    
    # 根据 "_" 进行分割,并返回一个列表
    s2 = s1.rsplit("_")
    print(s2)
    print(type(s2))
    
    # 指定了分割次数(从右侧开始查找分隔符)
    s3 = s1.rsplit("_",1)
    print(s3)
    print(type(s3))
    

    运行结果:

    rstrip(self, chars=None):

    说明:和 lstrip() 类似,截掉字符串右侧的空格或指定字符, chars 表示指定截掉的字符,默认为空格。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    #截掉右侧空格
    s1  = "abcabc       "
    s2 = s1.rstrip()
    print(s2)
    
    # 截掉右侧指定字符 "*"
    s3 = "abcabc***"
    s4 = s3.rstrip("*")
    print(s4)
    

    运行结果:

    split(self, sep=None, maxsplit=-1):

    说明:和 rsplit() 类似,从左到右通过指定分隔符对字符串进行切片,并返回一个列表, sep 表示指定分割符,默认为空格, maxsplit 表示分割次数,默认全部分割。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abc_def_ghi"
    
    # 根据 "_" 进行分割,并返回一个列表
    s2 = s1.split("_")
    print(s2)
    print(type(s2))
    
    # 指定了分割次数(从左侧开始查找分隔符)
    s3 = s1.split("_",1)
    print(s3)
    print(type(s3))
    

    运行结果:

    splitlines(self, keepends=None):

    说明:根据换行进行分割,并返回一个列表, keepends 表示列表中是否包含换行符,默认不包含。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = """abc
    def
    ghi"""
    
    # 根据换行分割 返回一个包含各行作为元素的列表,换行符不包括在结果列表里
    l1 = s1.splitlines()
    print(l1)
    
    # 参数 keepends 为 True 则包含换行符 否则 不包含换行符
    l2 = s1.splitlines(1)
    print(l2)
    

    运行结果:

    startswith(self, prefix, start=None, end=None):

    说明:判断字符串是否是以指定字符开头,如果是返回 Truestart 表示开始的位置, end 表示结束的位置。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "hello world"
    
    # 查看这个字符串是否以 "he" 开头
    s2 = s1.startswith("he")
    print(s2)
    
    # 指定范围,查看这个字符串是否以 "l" 开头
    s3 = s1.startswith("l",4,7)
    print(s3)
    

    运行结果:

    strip(self, chars=None):

    说明:和 lstrip()rstrip() 类似,截掉字符串左右两侧的空格或指定字符, chars 表示指定截掉的字符,默认为空格。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    #截掉左右两侧侧空格
    s1  = "       abcabc       "
    s2 = s1.strip()
    print(s2)
    
    # 截掉左右两侧指定字符 "*"
    s3 = "***abcabc***"
    s4 = s3.strip("*")
    print(s4)
    

    运行结果:

    swapcase(self):

    说明:字符串的大小写字母进行转换,大写变小写,小写变大写。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcABC"
    
    #大写变小写,小写变大写
    s2 = s1.swapcase()
    print(s2)
    

    运行结果:

    title(self):

    说明:返回 标题化 的字符串,就是说所有单词都是以大写开始,其余字母均为小写。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "hEelo woRld"
    s2 = s1.title()
    print(s2)
    

    运行结果:

    translate(self, table):

    说明:根据参数 table 给出的表将字符串中的字符进行转换, table 表示转换表,就是通过maketrans方法创建的表。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 根据 maketrans() 创建一个转换表
    dic = str.maketrans("ac","xl")
    
    # 根据 translate() 进行转换
    s2 = s1.translate(dic)
    print(s2)
    

    运行结果:

    upper(self):

    说明:将字符串中的小写字母转换为大写字母。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 将小写字母 转换为 大写字母
    s2 = s1.upper()
    print(s2)
    

    运行结果:

    zfill(self, width):

    说明:返回指定长度的字符串,原字符串右对齐,左侧填充 "0"width 定义总长度。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcabc"
    
    # 原字符串右对齐,左侧填充 "0"
    s2 = s1.zfill(20)
    print(s2)
    

    运行结果:

    12.3-索引:

    可以根据每个元素的位置索引来找到对应的元素,位置索引又称为下标,下标都是从 0 开始的。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    
    # 获取字符串中的第一个元素
    print("第一个元素:",s1[0])
    
    # 获取字符串中的第四个元素
    print("第四个元素:",s1[3])
    
    # 获取字符串中最后一个元素
    print("最后一个元素:",s1[-1])
    
    # 获取字符串中倒数第三个元素
    print("倒数第三个元素:",s1[-3])
    

    运行结果:

    12.4-查看字符串长度:

    可以通过 len() 函数来查看字符串的长度。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    
    # 获取字符串的长度
    print(len(s1))
    

    运行结果:

    12.5-切片:

    即指定范围来获取多个元素, s1[2:8:2] 第一个数字表示起始下标称为 下限 ,第二个数字表示结束下标称为 上限 ,第三个数字表示间隔数称为 步长 ,默认步长为 1 ,表示下限和上限之间的每一个元素都会出现在结果中。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    
    # 获取字符串中前三个元素
    print("前三个元素:",s1[0:3])
    
    # 从头开始获取时,可以忽略 下限
    print("忽略下限:",s1[:3])
    
    #取全部,不能填写 -1
    print("取全部填写-1的:",s1[:-1])
    print("取全部未填写-1的:",s1[0:])
    
    #每隔两个两个元素就获取一个
    print("隔两个元素:",s1[::3])
    

    运行结果:

    12.6-str类型和bytes类型相互转换

    UTF-8 编码,一个汉字三个字节,以 GBK 编码,一个汉字两个字节,一个字节是八位。

    Python 3.5.1:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "zhongwen"
    for i in s1:
        print(i)
    
    s2 = "中文"
    for i in s2:
        print(i)
    

    运行结果:

    通过上面的实例可以看出,在 Python 3.5.1 ,通过 for 循环字符串时,不管是字母还是中文,都是一个字符一个字符输出的。

    Python 2.7.2:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "zhongwen"
    for i in s1:
        print(i)
    
    s2 = "中文"
    for i in s2:
        print(i)
    

    运行结果:

    通过上面的实例可以看出,而在 Python 2.7.2 中,通过 for 循环字符串时,是按照字节进行输出的,所以在输出中文的时候是乱码,因为 UTF-8 编码,一个汉字是三个字节,所以会输出六个乱码的字符。

    str类型和bytes类型相互转换:

    Python 3.5.1 中,既可以把字符转换成字节,也可以把字节转换成字符,通过 bytes() 函数即可,可以将字符串转换成字节。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "中"
    for i in s1:
        print(i)
        b1 = bytes(i,encoding="utf-8")
    
    #输出十六进制,"\xe4"是十六进制的字符
        print(b1)
    
    # 字节默认是以 十六进制 表示,而用 for 循环输出每一个元素的时候,默认会输出 十进制
    # "228" 表示 十进制,"0b11100100" 表示 二进制
    for s in b1:
        print("十进制:",s,"二进制:",bin(s))
    

    运行结果:

    def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__
        """
        str(object='') -> str
        str(bytes_or_buffer[, encoding[, errors]]) -> str
    

    说明:通过源码可以看出,str 接受两个参数时,第一个参数需要是 bytes 对象, encoding 表示以什么编码将字节转换成字符串。

    >>> b1 = bytes("中文",encoding="gbk")
    >>> b1
    b'\xd6\xd0\xce\xc4'
    >>> s1 = str(b1,encoding="gbk")
    >>> s1
    '中文'
    

    12.7-练习题:

    通过while循环输出a、b、c....案例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    start = 0
    while start < len(s1):
        print(s1[start])
        start += 1
    

    运行结果:

    通过for循环输出a、b、c....案例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    for i in s1:
        print(i)
    

    运行结果:

    通过for循环遇到c不输出案例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    for i in s1:
        if i == "c":
            continue
        print(i)
    

    运行结果:

    通过for循环只输出a案例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    s1 = "abcdefg"
    for i in s1:
        if i == "b":
            break
        print(i)
    

    运行结果:

    相关文章

      网友评论

        本文标题:Python基础(12)-字符串数据类型及其所具备的方法

        本文链接:https://www.haomeiwen.com/subject/jrajwttx.html