zoukankan      html  css  js  c++  java
  • python 字符串操作一

    一、创建字符串

    >>> s1 = '12345'
    >>> s1
    '12345'
    >>> s2 = str(12345)
    >>> s2
    '12345'
    >>> s3 = str([1, 2, 3, 4, 5])
    >>> s3
    '[1, 2, 3, 4, 5]'
    >>> s4 = str({'one': 1, "two": 2, "three": 3})
    >>> s4
    "{'one': 1, 'two': 2, 'three': 3}"
    

    二、格式化字符串

    第一种方式:

    >>> s1 = 'wang'
    >>> s2 = 10
    >>> s3 = 'hello'
    >>> s4 = s1 + s2 + s3
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
    TypeError: must be str, not int
    >>> s4 = s1 + str(s2) + s3
    >>> s4
    'wang10hello'
    

    第二种方式:

    >>> s5 = '%s%d%s' % (s1, s2, s3)
    >>> s5
    'wang10hello'
    

    Python中字符串格式化符号:

    格式化操作辅助符号:

    >>> num = 100
    >>> '%x' % num
    '64'
    >>> '%X' % num
    '64'
    >>> '%#x' % num
    '0x64'
    >>> '%#X' % num
    '0X64'
    >>> pi = 3.1415926
    >>> '%.4f' % pi
    '3.1416'
    >>> '%5.2f' % pi
    ' 3.14'
    
    >>> pi = 3.141592
    >>> '%*s' % (10, pi)
    '  3.141592'
    
    >>> d = {'one': 1}
    >>> "%(one)s" % d
    '1'

    第三种方式:

    >>>"{0} is {1} years old".format("Wilber", 28)  # 位置参数
    'Wilber is 28 years old'
    
    >>> "{name} is {age} years old".format(name = "Wilber", age = 28)  # 关键字参数
    'Wilber is 28 years old'
    >>> li = ["Wilber", 28]
    >>> "{0[0]} is {0[1]} years old".format(li)  # 下标参数
    'Wilber is 28 years old'

    format格式化字符串的一般形式如下:

    "... {field_name!conversion:format_spec} ..."

    从上面的代码可以看到,格式化字符串可分为 field_name、conversion、format_spec 三部分,分别对应替换字段名称(索引)、转换标志、格式描述。其中,字段名称是必选的,而后两者是可选的。转换标志紧跟在英文感叹号后面,而格式描述紧跟在英文冒号后面。

    前面已经提到过,字段名称既可是位置索引,也可是关键字索引。字段名称后面可以通过点来访问属性,或通过方括号来访问元素。

    在这里,我们重点看一下格式描述(format_spec)这一项。

    格式描述中含有6个选项,分别是 fill、align、sign、width、precision、type。 它们的位置关系如下:

    [[fill]align][sign][#][0][width][,][.precision][type]
    fill 
    可以是任意字符,默认为空格。

    align 
    仅当指定最小宽度时有效。

    < 左对齐(默认选项)
    > 右对齐
    = 仅对数字有效;将填充字符放到符号与数字间,例如 +0001234
    ^ 居中对齐
    sign 
    仅对数字有效

    + 所有数字均带有符号
    - 仅负数带有符号(默认选项)
     即空格;正数前面带空格,负数前面带符号
    '#' 
    只对整数有效

    自动在二进制、八进制、十六进制数值前添加对应的 0b、0o、 0x。

    ',' 
    自动在每三个数字之间添加 , 分隔符。

    width 
    十进制数字,定义最小宽度。如果未指定,则由内容的宽度来决定。

    如果没有指定对齐方式(align),那么可以在 width 前面添加一个0来实现自动填充0,等价于 fill 设为 0 并且 align 设为 =。

    precision 
    用于确定浮点数的精度,或字符串的最大长度。不可用于整型数值。

    type 
    确定参数类型,默认为 s ,即字符串。

    整数输出类型:

    b:以二进制格式输出
    c:将整数转换成对应的 unicode 字符
    d:以十进制输出(默认选项)
    o:以八进制输出
    x:以十六进制小写输出
    X:以十六进制大写输出
    n:与 d 相同,但使用当前环境的分隔符来分隔每3位数字

    十进制浮点数输出类型:

    e:指数标记;使用科学计数法输出,用e来表示指数部分,默认 precision 为6
    E:与 e 相同,但使用大写 E 来表示指数部分
    f:以定点形式输出数值,默认 precision 为6
    F:与 f 相同
    g:通用格式;对于给定的 precision p >= 1,取数值的p位有效数字,并以定点或科学计数法输出(默认选项)
    G:通用格式;与 g 相同,当数值过大时使用 E 来表示指数部分
    n:与 g 相同,但使用当前环境的分隔符来分隔每3位数字
    %:百分比标记;使用百分比的形式输出数值,同时设定 f 标记

    >>> '{:>8}'.format('3.14')
    '    3.14'
    >>> '{:<8}'.format('3.14')
    '3.14    '
    >>> '{:^8}'.format('3.14')
    '  3.14  '
    >>> '{:0>8}'.format('3.14')
    '00003.14'
    >>> '{:a>8}'.format('3.14')
    'aaaa3.14'
    
    >>> '{:.4f}'.format(3.1415926)
    '3.1416'
    >>> '{:0>10.4f}'.format(3.1415926)
    '00003.1416'
    
    >>> '{:b}'.format(11)
    '1011'
    >>> '{:d}'.format(11)
    '11'
    >>> '{:o}'.format(11)
    '13'
    >>> '{:x}'.format(11)
    'b'
    >>> '{:#x}'.format(11)
    '0xb'
    >>> '{:#X}'.format(11)
    '0XB'
    
    >>> '{:,}'.format(15700000000)
    '15,700,000,000'
    

      

    三、字符串模板

    from string import Template
    
    s = Template("Hi, $name! $name is learning $language")
    print(s.substitute(name="Wilber", language="Python"))
    
    d = {"name": "Will", "language": "C#"}
    print(s.substitute(d))
    
    # 用$$表示$符号
    s = Template("This book ($bname) is 17$$")
    print(s.substitute(bname="TCP/IP"))
    
    Hi, Wilber! Wilber is learning Python
    Hi, Will! Will is learning C#
    This book (TCP/IP) is 17$
    

      

  • 相关阅读:
    [转] How to import a large data set using XPO efficiently within a transaction
    [原] XAF 如何启用ListView Top N records 提升用户使用体验
    [XAF] How to improve the application's performance
    [XAF] Simplifying integration of custom controls bound to data from XAF application database
    解决Hyper-v Server更换网卡后上传速度变得非常慢的问题
    在SqlServer中通过SQL语句实现树状查询
    spring boot jpa定义返回类型问题
    linux-1
    HTML5——8form表格
    HTML5——7iframe框架
  • 原文地址:https://www.cnblogs.com/gundan/p/8079236.html
Copyright © 2011-2022 走看看