Python基础教程笔记——使用字符串

原文地址为: Python基础教程笔记——使用字符串

使用字符串

1 基本字符串操作

  1. 说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;
  2. 注意:字符串是不可变的,所以不能对其进行赋值;
  3. 例子
    1:  >>> mystr="Test string"

    2: >>> mystr[0] = 't'

    3: Traceback (most recent call last):

    4: File "<pyshell#1>", line 1, in <module>

    5: mystr[0] = 't'

    6: TypeError: 'str' object does not support item assignment

    7: >>>

2 字符串格式化:精简版

 

2.1 用字符串格式化操作符

  1. 说明:字符串格式化使用字符串格式化操作符百分号( % )实现,在操作符的左侧是格式化字符串,右侧是希望被格式化的值;
  2. 注意:
    1. 只有元组和字典可以被格式化为一个以上的值,列表和其他序列会被格式化为一个值;
    2. 转换说明符,用于标记需要插入转换值的位置;
    3. 如果在格式化字符串中要输出百分号,则需要使用 %%
  3. 例子:
     1:  #一般格式化

    2: >>> myformat = "Hello, my name is %s %s"

    3: >>> name = ('Bill','Gunn')

    4: >>> print (myformat % name)

    5: Hello, my name is Bill Gunn

    6: >>>

    7:

    8: #用列表格式化

    9: >>> myformat = 'Hello, my name is %s'

    10: >>> name=['Bill', 'Gunn']

    11: >>> print(myformat % name)

    12: Hello, my name is ['Bill', 'Gunn']

    13:

    14: #打印浮点数

    15: >>> import math

    16: >>> print ("PI = %.5f" % pi)

    17: PI = 3.14159

    18:

    19: #打印百分号

    20: >>> print("%.2f%%"% 22.3)

    21: 22.30%

    22: >>>

2.2 用string的Template格式化字符串

  1. 说明:类似于Unix Shell中的变量替换,使用substitute方法,将字符串 模板中的$foo替换为传递进来的参数foo
  2. 例子:
     1:  #从string模块中导入Template

    2: >>> from string import Template

    3: #创建模板

    4: >>> myformat = Template("My name is $name")

    5: #替换变量并打印

    6: >>> print(myformat.substitute(name="Bill Gunn"))

    7: My name is Bill Gunn

    8: >>>

    9:

    10: #输出美元符号的方法,在模板里输入两个$

    11: >>> mytemplate = Template("The price is $$$price")

    12: >>> mytemplate.substitute(price=100)

    13: 'The price is $100'

    14: >>>

    15:

    16: #如果参数与后面的字符串相连,需要用大括号将其括起来

    17: >>> from string import Template

    18: >>> mytemplate = Template("It's ${x}tastic!")

    19: >>> mytemplate.substitute(x='slum')

    20: "It's slumtastic!"

    21: >>>

    22:

    23: #使用字典替换参数

    24: >>> mytemplate = Template("My $property is $value")

    25: >>> name = {}

    26: >>> name["property"] = "name"

    27: >>> name["value"] = "Bill Gunn"

    28: >>> mytemplate.substitute(name)

    29: 'My name is Bill Gunn'

    30: >>>

    31:

3 字符串格式化:完整版

  1. 说明:字符串格式化操作符的右操作数如果是元组,那么在格式化字符串 中必须将元组中的各个元素都有对应的转义说明符。
  2. 例子:
     1:  >>> data = tuple(list("123"))

    2: >>> data

    3: ('1', '2', '3')

    4: #格式化字符串中只有一个转义说明符,而元组中有三个元素,转换会报错

    5: >>> print ("data is %s" % data)

    6: Traceback (most recent call last):

    7: File "<pyshell#18>", line 1, in <module>

    8: print ("data is %s" % data)

    9: TypeError: not all arguments converted during string formatting

    10: #显示元组中的全部元素

    11: >>> print ("data is %s %s %s" % data)

    12: data is 1 2 3

    13: >>>

    14:

3.1 转换说明符

  1. 转换说明符
     
    转义说明符 含义
    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对象)

3.2 简单转换

  1. 例子:
     1:  #十进制整数

    2: >>> print ("The price is $%d" % 12)

    3: The price is $12

    4:

    5: #十六进制整数

    6: >>> print ("Hex %x" % 12)

    7: Hex c

    8:

    9: #八进制整数

    10: >>> print ("Oct %o" % 12)

    11: Oct 14

    12: >>>

    13:

3.3 字段宽度和精度

  1. 说明:
    1. 字段宽度:转换后的值所保留的最小字符个数;
    2. 字段精度:转换后,结果中应该的小数位数;
    3. 可以使用*作为字段宽度或者精度
  2. 例子:
     1:  #限制宽度

    2: >>> "%10f" % math.pi

    3: ' 3.141593'

    4:

    5: #限制小数位数

    6: >>> "%5.2f" % math.pi

    7: ' 3.14'

    8:

    9: #用星号限制宽度和精度,下例中,宽度为10,精度为5

    10: >>> '%*.*s' % (10, 5, 'adfasdfadsfasdfasdfasdf')

    11: ' adfas'

    12: >>>

    13:

3.4 符号,对齐和 0 填充

  1. 说明:
    1. 零:宽度不够时用数字0填充;
    2. 负号:左对齐;
    3. 正号:不管是正数还是负数都标记出符号
    4. 空格:宽度不够时用空格填充;
  2. 例子:
     1:  #空白补0

    2: >>> print ("%010f" % math.pi)

    3: 003.141593

    4:

    5: #左对齐

    6: >>> "%-10.2f" % math.pi

    7: '3.14 '

    8:

    9: #空白右对齐

    10: >>> print("% 5d\n% 5d" % (123, 12))

    11: 123

    12: 12

    13:

    14: #显示正负符号

    15: >>> print ("%+5d\n%+5d" % (123, -123))

    16: +123

    17: -123

    18: >>>

    19:

4 字符串方法

 

4.1 find

  1. 说明:用于在长字符串中查找子字符串,如果找到,则返回子字符串在左 侧第一次出现的索引,没找到返回-1,在查找时,还可以指定在长字符串 中查找的范围,提供起始索引和结束索引作为查找的参数;
  2. 注意:查找时,包括起始索引位置,但是不包括结束索引的位置;
  3. 例子:
     1:  >>> string.ascii_letters

    2: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

    3: >>> letters = string.ascii_letters

    4: >>> letters.find('AB')

    5: 26

    6: >>> letters.find('X',30,-1)

    7: 49

    8: >>> letters.find("AB",26)

    9: 26

    10:

4.2 join

  1. 说明:将队列中的元素用字符串连接起来,并且列表中的元素必须是字符 串;
  2. 例子:
    1:  >>> data = list('123456')

    2: >>> data

    3: ['1', '2', '3', '4', '5', '6']

    4: >>> "AB".join(data)

    5: '1AB2AB3AB4AB5AB6'

    6: >>>

    7:

4.3 lower

  1. 说明:将字符串转换成小写字母,并返回,但是原字符串不改变;
  2. 例子:
    1:  >>> mystr="ABCD"

    2: >>> mystr.lower()

    3: 'abcd'

    4: >>> mystr

    5: 'ABCD'

    6: >>>

    7:

4.4 replace

  1. 说明:返回所有匹配项都被替换之后的字符串
  2. 例子:
    1:  >>> mystr = "My name is Geng Qi"

    2: >>> mystr.replace("Geng Qi", "Bill Gunn")

    3: 'My name is Bill Gunn'

    4: >>>

4.5 split

  1. 说明:将字符串分割成序列;
  2. 注意:如果不提供分割符,则会将空白符当作分割符;
  3. 例子
     1:  #以加号为分割符

    2: >>> mystr = "1+2+3+4+5+6"

    3: >>> mystr.split('+')

    4: ['1', '2', '3', '4', '5', '6']

    5:

    6: #不提供分割符时,以空白符为分割符

    7: >>> mystr = "This is a test string"

    8: >>> mystr.split()

    9: ['This', 'is', 'a', 'test', 'string']

    10: >>>

    11:

4.6 strip

  1. 说明:去除两侧的空白,也可以去除指定的字符;
  2. 例子:
     1:  >>> mystr = "           asdfad adfasf asdf                      "

    2: >>> mystr

    3: ' \tasdfad adfasf asdf \t\t'

    4: #去除空白符

    5: >>> mystr.strip()

    6: 'asdfad adfasf asdf'

    7:

    8: #去除指定字符

    9: >>> mystr.strip('\t')

    10: ' \tasdfad adfasf' asdf '

    11: >>>

    12:

4.7 translate

  1. 说明:translate是单字替换,可以同时替换多个字符
  2. 例子:
    1:  >>> table = str.maketrans('cs', 'kz')

    2: >>> table

    3: {115: 122, 99: 107}

    4: >>> "Please don't knock at my door!".translate(table)

    5: "Pleaze don't knokk at my door!"

    6:

Date: 2011-11-15 23:24:43

Author:

Org version 7.7 with Emacs version 23

Validate XHTML 1.0

转载请注明本文地址: Python基础教程笔记——使用字符串

猜你喜欢

转载自blog.csdn.net/dearbaba_8520/article/details/81428359