zoukankan      html  css  js  c++  java
  • 字符串

    1.基本字符串操作.

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

      注意:字符串都是不可变的,因此任何改变字符串的操作都是不合法的。

    2.字符串格式化:精简版

      字符串格式化适用字符串格式化操作符即百分号%来实现。

      在%左侧放置一个字符串(格式化字符串),而右侧则放置希望被格式化的值。可以使用一个值,入一个字符串或者数字,也可以使用多个值的元组或者字典。

      一般情况下使用元组,示例如下:

    1 >>>format = "hello,%s. %s enough for ya"
    2 >>>values = ('world','hot')
    3 >>>print format % values
    4 hello,world. hot enough for ya

      注意:如果使用列表或者其他序列代替元组,那么序列会被解释成为一个值。只有元组和字典可以格式化一个以上的值。

      格式化字符串的%s部分称为转换说明符(conversion specifier),它们标记了需要插入转换值得位置。s表示值会被格式化为字符串——如果不是字符串,则会用str将其转换为字符串。这个方法大多数值都有效。

      注意:如果在格式化字符串里面包含了百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了。

    3.字符串格式化:完整版

      3.1 简单转换

    1 >>> from math import pi
    2 >>> pi
    3 3.141592653589793
    4 >>> 'Price of %s: $%d' %('eggs',42)
    5 'Price of eggs: $42'

      3.2 字段宽度和精度

        转换说明符可以包括字段宽度和精度。字段宽度是转换后的子所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数,或者(对于字符串转换来说)是转换后的  值所能包含的最大字符个数。

      示例如下:

    >>> '%10f' % pi #字段宽度 10
    '  3.141593'
    >>> '%10.2f' % pi #字段宽度 10,精度 2
    '      3.14'
    >>> '%.2f' % pi #精度 2
    '3.14'

      可以使用*来作为字段宽度或者精度,此时数值会从元组参数中读出:

    1 >>> '%.*s' %(5,'Guido van Rossum')
    2 'Guido'
    3 >>> '%.*s' %(6,'Guido van Rossum')
    4 'Guido '
    5 >>> '%.*s' %(10,'Guido van Rossum')
    6 'Guido van '

      3.3 符号、对齐和用0填充

      在字段宽度和精度值之前还可以放置一个“标识”,该标识可以是0、+、-或者空格。

      示例如下:

    1 >>> '%010.2f' % pi
    2 '0000003.14'

      注意:在010中开头的那个0并不意味着段宽度说明符为八进制数,他只是个普通的python数值。当使用010作为字段宽度说明符的时候,表示字段宽度为10,用0补充。

      字符串格式化示例:

     1 #使用给定的宽度打印格式化后的价格列表
     2 width = input('please enter  ')
     3 width = int(width)
     4 
     5 price_width = 10                        #定义价格字段宽度
     6 item_width = width - price_width        #定义菜单裂变宽度
     7 
     8 header_format = '%-*s%*s'             #定义表头格式
     9 formats       = '%-*s%*.2f'            #定义列表格式
    10 
    11 print('='*width)                     #打印
    12 
    13 #打印表头
    14 print(header_format%(item_width,'Item',price_width,'Price'))
    15 
    16 print('-' * width)
    17 
    18 #打印商品列表
    19 print(formats%(item_width,'Apples',price_width,0.4))
    20 print(formats%(item_width,'Pears',price_width,0.5))
    21 print(formats%(item_width,'Cantaloupes',price_width,1.92))
    22 
    23 print('=' * width)
    24 
    25 """
    26 结果:
    27 please enter  35
    28 ===================================
    29 Item                          Price
    30 -----------------------------------
    31 Apples                         0.40
    32 Pears                          0.50
    33 Cantaloupes                    1.92
    34 ===================================
    35 """

    4.  字符串方法

      4.1 find

      find方法可以在一个较长的字符串中查找子串。它返回子串所在位置的最左端索引。如果没有找到则返回-1

      示例如下:

    1 >>> title = 'hello python!'
    2 >>> title.find('jim')#找不到返回-1
    3 -1
    4 >>> title.find('hello')#找到返回最左端索引
    5 0

      注意:与find有相似功能的有in,但in操作符只能用来查找字符串中的单个字符。find方法并不发回布尔值。

      这个方法还可以接收可选的起始点和结束点参数,示例如下:

     1 >>> subject = '$$$ Get rich now!!!$$$'
     2 >>> subject.find('$$$')
     3 0
     4 >>> subject.find('$$$',1) #只提供起始点
     5 19
     6 >>> subject.find('!!!') #只提供起始点
     7 16
     8 >>> subject.find('!!!') #提供起始点和结束点
     9 16
    10 >>> subject.find('!!!',0,16) #提供起始点和结束点
    11 -1

      4.2 join

      join方法是非常重要的字符串方法,他是split方法的逆方法,用来连接序列中的元素:

     1 >>> seq = [1,2,3,4,5]
     2 >>> swp = '+'
     3 >>> swp.join(seq) #连接字符串列表
     4 Traceback (most recent call last):
     5   File "<stdin>", line 1, in <module>
     6 TypeError: sequence item 0: expected str instance, int found
     7 >>> seq = ['1','2','3','4','5']
     8 >>> swp = '+'
     9 >>> swp.join(seq)
    10 '1+2+3+4+5'

      4.3 splist

      splist方法用来将字符串分割成序列。示例如下:

    1 >>> '1+2+3+4+5'.split('+')
    2 ['1', '2', '3', '4', '5']

      4.4 strip

      strip方法返回去除两侧(不包含内部)空格的字符串:

    1 >>> '        hello,python   '.strip()
    2 'hello,python'

      strip方法和lower方法一起使用的话就可以很方便的对比输入的和存储的值。

      4.5 translate

        translate方法和replace方法一样,可以替换字符串中的某写部分,但是和前者不同的是,translate方法只处理单个字符。他的优势在于可以同时进行多个替换,有些时候  比replace效率高得多。

      

  • 相关阅读:
    小程序配置 全局配置
    浅谈 Nginx和LVS的各种优缺点
    LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
    用Camshift算法对指定目标进行跟踪
    AsyncTask源代码解析
    shell中的${},##和%%的使用
    hdu 1081 &amp; poj 1050 To The Max(最大和的子矩阵)
    POJ 1141 Brackets Sequence (区间DP)
    Ejb in action(六)——拦截器
    7.JAVA编程思想笔记隐藏实施过程
  • 原文地址:https://www.cnblogs.com/rsdqc/p/5159155.html
Copyright © 2011-2022 走看看