• python字符串操作


    概述

      所有的标准序列操作(索引、分片、乘法、判断成员资格、求长度、取最大值和最小值)对字符串同样适用。

      特性:不可修改

    字符串格式化

      字符串格式化使用字符串操作符即百分号%来实现;在%左侧放置一个字符串(格式化字符串),而最右侧则放置被格式化的值。可以使用一个值,如一个字符串或者数字,也可以是多个值的元组或者字典(如果希望格式化多个值的话);

      格式化字符串的%s部分称为转换说明符,它们标记了需要插入转换位置;

      如果在格式化字符串里面包括百分号,那必须使用%%,这样Python就不会将百分号误认为是转换说明符;

    >>> print("Hello, %s. %s enough for ya?" %('world', 'Hot'))
    Hello, world. Hot enough for ya?

    1.格式化操作符的右操作数可以是任意类型,如果是元组或者映射类型(如字典),那么字符串格式化将有所不同;
    2.如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符;

    基本转换说明符:

    • %字符:标记转换说明符的开始;
    • 转换标志(可选):- 表示左对齐;+ 表示在转换值之前要加上正否号;” “(空白字符)表示正数之前保留空格;0 表示转换值若位数不够则用0填充;
    • 最小字字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是 *,则宽度会从元组中读出;
    • 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出;
    • 转换类型:
    ###字符串格式化转换类型###
    d, i		//带符号的十进制整数;
    o		//不带符号的八进制;
    u		//不带符号的十进制;
    x(小写)	//不带符号的十六进制;
    X(大字)	//不带符号的十六进制;
    e(小写)	//科学计数法表示的浮点数;
    E(大写)	//科学计数法表示的浮点数;
    f, F		//十进制浮点数;
    g		//如果指数大于-4或者小于精度值则和e相同,其他情况与f相同;
    G		//如果指数大于-4或者小于精度值则和E相同,其他情况则与F相同;
    C(大写)	//单字符(接受整数或者单字符字符串);
    r		//字符串(使用repr转换任意Python对象);
    s		//字符串(使用str转换任意Python对象);
    
    • 简单转换

     简单转换只需写转换类型

     1 >>> 'Price os eggs: $%d' %42
     2 'Price os eggs: $42'
     3 >>> 'Price os eggs: $%x' %42
     4 'Price os eggs: $2a'
     5 >>> 'Pi: %f' % pi
     6 'Pi: 3.141593'
     7 >>> 'Very inexact estimate os pi: %i' % pi
     8 'Very inexact estimate os pi: 3'
     9 >>> 'Using str: %s' % 42L
    10 'Using str: 42'
    11 >>> 'Using str: %r' % 42L
    12 'Using str: 42L'
    • 字段的宽度和精度

      转换说明符可以包括字段宽度和精度。字段宽度是转换后的值所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。
        这两个参数都是整数(首先是字段宽度,让后是精度),通过点号(.)分隔。虽然两个都是两个可选的参数,但如果只给出精度,就必须包含点号。

    1 >>> '%10f' % pi    #字段宽 10
    2 '  3.141593'
    3 >>> '%10.2f' % pi    #字段宽 10,精度 2
    4 '      3.14'
    5 >>> '%.2f' % pi    #精度 2
    6 '3.14'
    7 >>> '%.5s' % 'hello,world'
    8 'hello' 

       可以使用*(星号)作为字段宽度或者精度(或者两者都使用*),此时数值会从元组参数中读出

    1 >>> print('%.*s' % (5, 'hello world'))
    2 'hello'
    • 符号、对齐和用0填充

      在字段宽度和精度值之前还可以放置一个“标记”,该标记可以是零、加号、减号或空格。

    零表示数字将会用0进行填充

    1 >>> print('%010.2f' % pi)
    2 '0000003.14'

      在010中开头的那个0并不意味着字段宽度说明符为八进制,它是个普通的Python数值当使用010作为字段宽度说明符的时候,表示字段宽度为10,并且用0进行填充空位,而不是说字段宽度为8;

    减号(-)用来左对齐数值

    1 >>> print('%-10.2f' % pi)
    2 '3.14

    空白(” “)意味着在正数前加上空格(这在对齐正负数时会很有用)

    1 >>> print('% 5d' % 10 + '
    ' + '% 5d' % -10)
    2    10
    3   -10

    加号(+),他表示不管是正数还是负数都标记出符号(同样是在对齐时使用)

    1 >>> print('%+5d' % 10 + '
    ' + '%+5d' % -10)
    2   +10
    3   -10

     python2.7之后支持使用format()方法对字符串进行格式化

    1 >>> print("Hello, {}. {} enough for ya?".format('world','Hot'))
    2 Hello, world. Hot enough for ya?

    字符串方法

    name = "my name is {name},i am is {ago}"
    
    print(name.capitalize())    #返回首写字母大写的字符串副本
    print(name.count('m')) #返回指定字符串在整个字符串中出现的次数
    print(name.center(50,'+')) #根据长度对字符串两端填充
    print(name.endswith('mzc')) #判断字符串的结尾,可以用作判断邮箱地址
    print(name.expandtabs(tabsize = 30)) #字符串中添加一个tab符,此方法用来指定tab符要空多少个字符
    print(name.find('name'))  #查找指定字符第一次出现的位置,并返回指定字符的索引
    print('tlak lil'.rfind('l')) #查找指定字符最后一次出现的位置,并返回指定字符的索引
    print(name.format(name='mzc'))  #格式化字符串
    print(name.format_map({'name':'mzc', 'ago':'18'})) #和format方法一样
    print('abc123'.isalnum())   #判断是否为阿拉伯数字或字符
    print('abcA'.isalpha()) #判断字符串是否为纯英文字母
    print('8998'.isdecimal()) #判断字符串是否为十进制
    print('My Name Is Mzc'.istitle()) #判断字符串各个单词首写字母是否为大写
    print('na me'.isidentifier()) #判断字符串是否为合法标识符
    print('123'.isdigit()) #判断一个字符串是否一个整数
    print('My Name Is  '.isprintable()) #tty file ,drive file
    print('My Name Is  '.isupper()) #判断字符串是否为大写
    print('My Name Is  '.islower()) #判断字符串是否为小写
    print('+'.join( ['1','2','3']) )    #使用单个元素将多个元素连接成字符串
    print( name.ljust(50,'*')  ) #右填充
    print( name.rjust(50,'-')  ) #左填充
    print( '
    mzc'.lstrip()  )   #去除左边空过或者换行
    print( 'mzc
    '.rstrip()  )   #去除右边空过或者换行
    print( '    mzc
    '.strip() )   #去除左右两边空过或者换行
    print( 'Mzc'.lower()  ) #将字母转换成小写
    print( 'Mzc'.upper()  ) #将字母转换成大写
    print("m z c".title())  #将各单词的首写字母转换成大写
    --------------------------------------------------------------------------------------------------------------------
    #字符串替换
    >>> p = str.maketrans("abcdefli",'123$@456')    #生成一个匹配关系,两个参数中元素个数要相同
    >>> print("lilianjie".translate(p) )
    56561nj6@
    print('alen li'.replace('l','L',2)) #字符替换,可以指定替换的个数
    
    print('1+2+3+4'.split('+')) #根据指定字符分割字符串
    print('a
    b
    c
    d
    e'.splitlines()) #根据换行符或空格分割字符串
    print('Spdir'.swapcase()) #反转字符串字母的大小写
    print('lex li'.zfill(50)) #对字符串进行向左以数字0进行填充
    
    s[::-1] #字符串反转
    

     字符串染色:

    #字符串染色
    
    #字体颜色
    print('字体颜色
    ')
    print("1.33[31;1m你好麽,33[0m我很好。。。")   #红色
    print("2.33[32;1m你好麽,33[0m我很好。。。")   #绿色
    print("3.33[33;1m你好麽,33[0m我很好。。。")   #黄色
    print("4.33[34;1m你好麽,33[0m我很好。。。")   #蓝色
    print("5.33[35;1m你好麽,33[0m我很好。。。")   #紫色
    print("6.33[36;1m你好麽,33[0m我很好。。。")   
    print("7.33[37;1m你好麽,33[0m我很好。。。
    ")
    
    
    #背景色
    print('背景颜色
    ')
    print("1.33[41;1m你好麽,33[0m我很好。。。")
    print("2.33[42;1m你好麽,33[0m我很好。。。")
    print("3.33[43;1m你好麽,33[0m我很好。。。")
    print("4.33[44;1m你好麽,33[0m我很好。。。")
    print("5.33[45;1m你好麽,33[0m我很好。。。")
    print("6.33[46;1m你好麽,33[0m我很好。。。")
    print("7.33[47;1m你好麽,33[0m我很好。。。")
    View Code
  • 相关阅读:
    Python基础-socketserver
    MySQL数据库-pymysql模块操作数据库
    MySQL数据库-外键链表之一对多,多对多
    MySQL数据库-表内容操作
    第02组 Alpha冲刺(5/6)
    第02组 Alpha冲刺(4/6)
    第02组 Alpha冲刺(3/6)
    第02组 Alpha冲刺(2/6)
    第02组 Alpha冲刺(1/6)
    第02组 团队Git现场编程实战
  • 原文地址:https://www.cnblogs.com/zhichaoma/p/7489999.html
Copyright © 2020-2023  润新知