python字符串学习

基础用法

if __name__ == '__main__':
    print()
    # Python中没有单个字符的概念,单个字符也是字符串类型。
    # 使用下标索引[],获取字符串中的单个字符
    # 最后一个字符的索引为 -1,倒数第二个字符的索引为 -2
    str1 = "012345"
    a = str1[0]
    b = str1[-5]
    print('a =', a, 'b =', b)
    # c = str[100] 报错
    # d = str[-100] 报错

    # 截取字符串,跳步
    str0 = "0123456789"
    str1 = str0[0:4]  # "0123"
    str2 = str0[:8:2]  # "0246"
    str3 = str0[4:9]  # "45678"
    print('st1 =', str1, 'str2 =', str2, 'str3 =', str3)

    # 使用字符串切片的形式,获取整个字符串
    str1 = "12345"
    str2 = str1[:]
    print('st2 =', str2)

    # 获取最小字符和最大字符
    str0 = "AaCcBbDdHk"
    str3 = min(str0)
    str4 = max(str0)
    print('str3 =', str3, 'str4 =', str4)

    # 将数字通过 repr() 转换成字符串,实现字符串和数字的拼接
    num1 = 1024
    str1 = "HaiCoder "
    strHaiCoder = str1 + repr(num1)  # 字符串和数字不能直接使用 + 号拼接
    print('strHaiCoder =', strHaiCoder)

    # str函数进行拼接
    num1 = 1024
    str1 = "HaiCoder "
    strHaiCoder = str1 + str(num1)

    # +号进行拼接
    str1 = "Hello,"
    str2 = "HaiCoder"
    str0 = str1 + str2
    print('str0 =', str0)

    # 字符串写一起进行拼接
    str0 = "Hello,""HaiCoder"
    print('str0 =', str0)

    # 合并列表字符串
    # strResult = str.join(iterable)
    # str	用于指定合并时的分隔符
    # iterable	做合并操作的源字符串数据,允许以列表、元组等形式提供
    lis = ['Study', 'From', 'HaiCoder']
    print(','.join(lis))  # Study,From,HaiCoder
    tup = ('Study', 'From', 'HaiCoder')  # Study     From     HaiCoder
    print('     '.join(tup))

    # str.split(sep, maxSplit)
    # str 要进行分割的字符串。
    # sep 指定分隔符,可以包含多个字符。此参数默认为None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。
    # maxSplit 可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxSplit + 1
    # 如果不指定或者指定为 -1,则表示分割次数没有限制
    str1 = "Hello,HaiCoder Hello,World"
    print('strs =', str1.split())
    print('strs =', str1.split(None, 0))

    # S.count(sub[, start[, end]]) -> int
    # S	表示原字符串
    # sub	表示要检索的字符串
    # start	指定检索的起始位置。如果不指定,默认从头开始检索
    # end	指定检索的终止位置,如果不指定,则表示一直检索到结尾
    str0 = "Study Python From HaiCoder"
    str1 = "abababa"
    print(str0.count('o'))          # 3
    print(str0.count('o', 11))      # 2
    print(str0.count('o', 100))     # 0
    print(str0.count('o', 10, 10))  # 0
    print(str0.count('o', 10, 11))  # 1
    print(str1.count('aba'))        # 2

    # S.find(sub[, start[, end]]) -> int
    # S	原字符串
    # sub	表示要检索的字符串
    # start	表示开始检索的起始位置。如果不指定,则默认从头开始检索
    # end	表示结束检索的结束位置。如果不指定,则默认一直检索到结尾
    # find() 函数返回 int 类型的值,如果包含,则返回第一次出现该字符串的索引;反之,则返回 -1
    strDemo = "000"
    print(strDemo.find('I'))  # -1

    # S.index(sub[, start[, end]]) -> int
    # index() 函数返回 int 类型的值,如果找到,则返回第一次出现该字符串的索引;反之,则抛出异常

    # 对齐字符串
    # S.ljust(width[, fillchar]) -> str
    # S.rjust(width[, fillchar]) -> str
    # S.center(width[, fillchar]) -> str
    strHaicoder = "I study Python From HaiCoder"
    lStr = strHaicoder.ljust(100)
    print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))
    lStr = strHaicoder.rjust(100)
    print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))
    lStr = strHaicoder.center(100)
    print("Len Str =", len(strHaicoder), "Len LStr =", len(lStr))

    # 判断是否以某个字符串开始/结束
    # S.startswith(prefix[, start[, end]]) -> bool
    # S.endswith(suffix[, start[, end]]) -> bool
    str0 = "I study Python From HaiCoder"
    print("IsStart =", str0.startswith("I study"))   # True
    # 使用 startswith() 函数,判断字符串指定位置以指定字符串开始
    print("IsStart =", str0.startswith("study", 2))  # True 指定位置以指定字符串开始
    print("IsEnd =", str0.endswith("HaiCoder"))      # True

    # 使用 title() 函数,将字符串首字母转成大写
    str0 = "i study Python From HaiCoder"
    print("str0 =", str0.title())

    # 大小写
    str0 = "Study Python From HaiCoder"
    print("str0 =", str0.lower())
    print("str0 =", str0.upper())
    str0 = "嗨客网(HaiCoder)"
    print("str0 =", str0.upper())
    print("str0 =", str0.lower())
    # 判断是否是全大写/小写
    print("islower =", str0.islower())
    print("isupper =", str0.isupper())

    # 数字的判断
    # isdecimal()	是否为十进制数字符,包括 Unicode 数字、双字节全角数字,不包括罗马数字、汉字数字、小数。
    # isdigit()	    是否为数字字符,包括 Unicode 数字,单字节数字,双字节全角数字,不包括汉字数字,罗马数字、小数。
    # isnumeric()	是否所有字符均为数值字符,包括 Unicode 数字、双字节全角数字、罗马数字、汉字数字,不包括小数。
    str0 = "1024"
    print("isdigit =", str0.isdigit())
    print("isnumeric =", str0.isnumeric())
    str1 = "10241024102410241024102410241024102410241024"
    print("isdigit =", str1.isdigit())
    print("isnumeric =", str1.isnumeric())
    s = "1.234"
    print(s+' isdigit: ', s.isdigit())
    print(s+' isdecimal: ', s.isdecimal())
    print(s+' isnumeric: ', s.isnumeric())
    s = "壹贰叁"
    print(s+' isdigit: ', s.isdigit())
    print(s+' isdecimal: ', s.isdecimal())
    print(s+' isnumeric: ', s.isnumeric()) # True

    # 判断是否是数字和字母的组合
    s0 = "HaiCoder1024"
    print("isanum =", s0.isalnum())
    # 判断是否是字母
    s0 = "HaiCoder"
    print("isalpha =", s0.isalpha())

    # 判断首字母是否大写,其他字母是小写
    s0 = "我的琳达MyLinda"
    print("istitle =", s0.istitle()) # False

    # 判断是否是空格
    s0 = "  "
    print("isspace =", s0.isspace())

    # 去除字符串两边特定字符
    s0 = "  123   123  "
    print("strip =", s0.strip())
    s0 = "123   123  "
    print("strip =", s0.strip())
    s0 = "   123   123"
    print("strip =", s0.strip())
    # 去除左边特定字符
    s0 = "   123   123"
    print("lstrip =", s0.lstrip())
    # 去除右边特定字符
    s0 = "   123   123"
    print("rstrip =", s0.rstrip())

    # 使用 strip() 函数,去除字符串的指定字符
    s0 = "python, python"
    s0 = s0.replace("python", "Golang")
    print("replace =", s0)

格式化

if __name__ == '__main__':
    print()

    # 格式化
    s0 = "Name : {name}, Site : {site}".format(name="Demo", site="www.demo.net")
    print("s0 =", s0)
    s0 = "{}, {}".format("Hello", "HaiCoder")
    print("s0 =", s0)
    s0 = "{1}, {0}, {1}".format("HaiCoder", "Hello")
    print("s0 =", s0)

    # { [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }
    # align
    # <	数据左对齐
    # >	数据右对齐
    # =	数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效
    # ^	数据居中,此选项需和 width 参数一起使用

    # sign
    # +	正数前加正号,负数前加负号
    # -	正数前不加正号,负数前加负号
    # 空格	正数前加空格,负数前加负号

    # #号
    # #	对于二进制、八进制和十六进制,使用此参数,各进制数前会分别显示 0b、0o、0x 前缀;反之则不显示前缀

    # type
    # s	对字符串类型格式化
    # d	十进制整数
    # c	将十进制整数自动转换成对应的 Unicode 字符
    # e 或者 E	转换成科学计数法后,再格式化输出
    # g 或 G	自动在 e 和 f(或 E 和 F)中切换
    # b	将十进制数自动转换成二进制表示,再格式化输出
    # o	将十进制数自动转换成八进制表示,再格式化输出
    # x 或者 X	将十进制数自动转换成十六进制表示,再格式化输出
    # f 或者 F	转换为浮点数(默认小数点后保留 6 位),再格式化输出
    # %	显示百分比(默认显示小数点后 6 位)
    s0 = "{0:->+#12.6}, {0:*<+#12.6}, {0:*^+#14.6}, {1:#x}, {1:#X}".format(1.12345678, 0x12345678)  # 四舍五入
    print("s0 =", s0)

    # 格式化数字
    # 3.1415926    	{:.2f}	            3.14	    保留小数点后两位
    # 3.1415926	    {:+.2f}	            +3.14	    带符号保留小数点后两位
    # -1	        {:+.2f}	            -1.00	    带符号保留小数点后两位
    # 2.71828	    {:.0f}	            3	        不带小数
    # 5	            {:0>2d}    	        05	        数字补零 (填充左边, 宽度为2)
    # 5	            {:x<4d}    	        5xxx	    数字补x (填充右边, 宽度为4)
    # 10	        {:x<4d}	            10xx	    数字补x (填充右边, 宽度为4)
    # 1000000	    {:,}	            1,000,000	以逗号分隔的数字格式
    # 0.25	        {:.2%}	            25.00%	    百分比格式
    # 1000000000	{:.2e}	            1.00e+09	指数记法
    # 13	        {:>10d}	            13	        右对齐 (默认, 宽度为10)
    # 13	        {:<10d}         	13	        左对齐 (宽度为10)
    # 13	        {:^10d}         	13	        中间对齐 (宽度为10)
    # 11	        '{:b}'.format(11)	1011	    二进制
    # 11	        '{:d}'.format(11)	11	        十进制
    s0 = '{0:.2%},{1:.2%}'.format(0.25, 25)  # 25.00%,2500.00%
    print("s0 =", s0)
if __name__ == '__main__':
    print()
    
    # print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    # objects  要输出的对象,是复数形式,表示可以一次输出多个对象。输出多个对象时,用 , 分隔
    # sep	   用来间隔多个对象,默认值是一个空格
    # end	   用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串
    # file	   要写入的文件对象,默认是标准输出
    # flush	   输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新
    course = "python"
    module = "demo"
    webSite = "www.baidu.com"
    print("I am study ", course, " in ", module, " by ", webSite, sep=',')
    print("I am study ", course, " in ", module, " by ", webSite)
    print("I am study ", course, end='\t')
    print("in Module ", module, end='\t')
    print("by WebSite", webSite)
    
    # %d,%i	转换为带符号的十进制形式的整数
    # %o	    转换为带符号的八进制形式的整数
    # %x,%X	转换为带符号的十六进制形式的整数
    # %e	    转化为科学计数法表示的浮点数(e 小写)
    # %E	    转化为科学计数法表示的浮点数(E 大写)
    # %f,%F	转化为十进制形式的浮点数
    # %g	    智能选择使用 %f 或 %e 格式
    # %G	    智能选择使用 %F 或 %E 格式
    # %c	    格式化字符及其 ASCII 码
    # %r	    使用 repr() 将变量或表达式转换为字符串
    # %s	    使用 str() 将变量或表达式转换为字符串
    # %10s      右对齐,占位符10位
    # %-10s     左对齐,占位符10位
    # %.2s      截取2位字符串
    # %10.2s    10位占位符,截取两位字符串
    # %%        文字%
    site = 'HaiCoder'
    print('%s has %d years old' % (site, 18))
    score = 99.85
    print('score = %f' % score)  # 99.850000 默认保留小数点后6位
    print('score = %.1f' % score)  # 99.8 保留小数点后1位,不四舍五入
    print('score = %F' % score)
    print('score = %.1F' % score)
    
    # %Nd 默认右对齐
    # %-Nd 使用左对齐
    num = 100241
    num2 = 1024
    print('score = %6d' % num)
    print('score = %5d' % num)
    print('score = %6d' % num2)
    print('score = %-6d' % num2)
    print('score = %06d' % num2)

    # print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式,
    # 如果字符串里面没有表达式,那么前面加不加f输出应该都一样

编解码

if __name__ == '__main__':
    print()

    # 编码
    # str.encode(encoding='UTF-8',errors='strict')
    # encoding	要使用的编码,默认值 UTF-8
    # errors	设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个 UnicodeError
    # 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值

    # 错误处理方式	说明
    # strict	    遇到非法字符就抛出异常
    # ignore	    忽略非法字符
    # replace	    用?替换非法字符
    # xmlcharrefreplace	使用 xml 的字符引用

    s0 = "嗨客网(HaiCoder)"
    byteRes0 = s0.encode()  # 对该变量进行编码,并返回 bytes 类型的变量
    print("byteRes0 =", byteRes0)

    s1 = "嗨客网(HaiCoder)"
    byteRes1 = s1.encode('gbk', 'strict')
    print("byteRes1 =", byteRes1)

    # 解码
    # str.decode(encoding='UTF-8',errors='strict')
    # encoding	要使用的解码,默认值 UTF-8
    # errors	设置不同错误的处理方案。默认为 ‘strict’,意为解码错误引起一个 UnicodeError
    # 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值

    s0 = byteRes0.decode()
    print("s0 =", s0)
    s1 = byteRes1.decode('gbk')
    print("s1 =", s1)

你可能感兴趣的:(python)