zoukankan      html  css  js  c++  java
  • python笔记03:使用字符串

    3.1 基本字符串操作:

    所有的标准序列操作(索引,分片,乘法,判断成员资格,求长度,取最小值,取最大值)对于字符串同样有效。但是,请记住:字符串都是不可变的

    3.2 字符串格式化:精简版

    字符串格式化使用字符串格式化操作符,即百分号%来实现。
    %也可以用做莫运算(求余)操作符。
    在%的左侧放置一个字符串(格式化字符串),而右侧则放置希望被格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者字典。一般情况下使用元组:
    >>> format = "Hello,%s,%s enough for ya?"
    >>> values = ('world','Hot')
    >>> print format % values
    Hello,world,Hot enough for ya?
    注意:
    1.如果使用列表或者其他序列代替元组,那么序列会被解释为一个值。只有元组和字典可以格式化一个以上的值。
    2.格式化字符串的%s部分被称为转换说明符,他们标记了需要插入转换值的位置。s表示值会被格式化为字符串----如果不是字符串,则会用str将其转换为字符串。
    3.如果要在格式化字符串里面包括百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了
    4.如果要格式化实数(浮点数),可以使用f说明转换说明符的类型,同时提供所需要的精度:一个句点再加上希望保留的小数位数。因为格式化转换说明符总是以表示类型的字符结束,所以精度应该放在类型字符前面:
    >>> format = "Pi with three decimals: %.3f"
    >>> from math import pi
    >>> print format % pi
    Pi with three decimals: 3.142

    3.2.1 模版字符串

    string提供另一种格式化值的方法:模版字符串。它的工作方式类似于很多UNIX Shell中的变量替换。如下所示:
    substitute这个模版方法会用传递进来的关键字foo替换字符串中的$foo:
    >>> from string import Template
    >>> s = Template('$x,glorious $x!')
    >>> s.substitute(x='slurm')
    'slurm,glorious slurm!'
    如果替换的事单词的一部分,那么参数名就必须用括号括起来,从而准确指明结尾:
    >>> s = Template("It's ${x}tastic")
    >>> s.substitute(x='slurm')
    "It's slurmtastic"
    可以使用$$插入美元符号:
    >>> s = Template("Make $$ selling $x!")
    >>> s.substitute(x='slurm')
    'Make $ selling slurm!'
    除了关键字参数之外,还可以使用字典提供的键值对
    >>> s = Template('A $thing must never $action.')
    >>> d = {}
    >>> d['thing'] = 'gentleman'
    >>> d['action'] = 'show his socks'
    >>> s.substitute(d)
    'A gentleman must never show his socks.'
    方法safe_substitute不会因缺少值或者不正确使用$字符而出错

    3.3 字符串格式化:完整版

    格式化操作符的右操作数可以是任意类型,如果是元组或映射类型(如字典),那么字符串格式化将有所不同。
    如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个字都需要一个对应的转换说明符
    如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以避免出错
    >>> '%s plus %s equals %s' % (1,2,3)
    '1 plus 2 equals 3'
    >>> '%s plus % equals %s.' % 1,2,3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: not enough arguments for format string

    3.3.1 基本的转换说明符

    基本的转换说明符包括以下部分。注意,这些项的顺序是至关重要的
    1.%字符:标记转换说明符的开始
    2.转换标志(可选):“-”表示左对齐;“+”表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
    3.最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出
    4.点(.)后跟精确度(可选):如果转换的时实数,精确度就表示出现在小数点后的位数,如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出
    5.转换类型:如下所示
    转换类型 含义
    d,i 带符号的十进制整数
    o 不带符号的八进制
    u 不带符号的十进制
    x 不带符号的十六进制(小写)
    X 不带符号的十六进制(大写)
    e 科学技术法表示的浮点数(小写)
    E 科学技术法表示的浮点数(大写)
    f,F 十进制浮点数
    g 如果指数大于-4或者小于精度值则和e相同,其他情况与e相同
    G 如果指数大于-4或者小于精度值则和e相同,其他情况与E相同
    C 单字符(接收整数或者单字符字符串)
    r 字符串(使用repr转换任意python对象)
    s 字符串(使用str转换任意python对象)

    3.3.2 简单转换

    简单的转换只需要写出转换类型,使用起来很简单:
    >>> 'Price of eggs: %d' % 42
    'Price of eggs: 42'
    >>> 'Hexadecimal price of eggs: %x.' % 42
    'Hexadecimal price of eggs: 2a.'
    >>> from math import pi
    >>> 'Pi: %f...' %pi
    'Pi: 3.141593...'
    >>> 'Pi: %f...' % pi
    'Pi: 3.141593...'
    >>> 'Very inexact estimate of pi: %i.' % pi
    'Very inexact estimate of pi: 3.'
    >>> 'Using str: %s.' % 42L
    'Using str: 42.'
    >>> 'Using repr: %r.' % 42L
    'Using repr: 42L.'

    3.3.3 字段宽度和精度

    转换说明符可以包括字段宽度与精度。字段宽度是转换后的值会所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。
    这两个参数都是整数(首先是字段宽度,然后是精度),通过点号(.)分隔。虽然两个都是可选的参数,但是如果只给出精度,就必须包含点号:
    >>> '%10f ' % pi   #字段宽10
    '  3.141593 '
    >>> '%10.2f' % pi  #字段宽10,精度2
    '      3.14'
    >>> '%.2f' % pi    #精度2
    '3.14'
    >>> '%.5s' % 'Guido van Rossum'
    'Guido'
    可以使用*(星号)作为字段宽度或者精度(或两者都用*),此时数值会从元组参数中读出:
    >>> '%.*s' % (5,'Guido van Rossum')
    'Guido'

    3.3.4 符号、对齐和用0填充

    在字段宽度与精度之前还可以放置一个“标志”,该标志可以是零,加号,减号或空格。零表示数字将会用0进行填充。
     
    注意:在010开头的那个0并不意味着字段宽度说明符为八进制数,他只是个普通的python数值。当使用010作为字段宽度说明符时,表示字段宽度为10,并且用0进行填充空位,而不是说字段宽度为8。
  • 相关阅读:
    APP性能之终端兼容优化分享
    Java反射机制
    语音编码的WAVE文件头格式剖析
    【原创】ASP.NET MVC3开发中遇到问题以及解决方法
    linux常用命令(基础)
    vue中粘贴板clipboard的使用方法
    解决部署zabbix中zabbixagent的状态为灰色现象
    IAR Embedded Workbench for ARM: Porting code from V4 to V5 ( for stm32)
    MSDN帮助文档 "无法显示该网页" 的问题解决方案(转)
    二叉排序树求每个结点平衡因子程序
  • 原文地址:https://www.cnblogs.com/zhangpf/p/7593897.html
Copyright © 2011-2022 走看看