设为首页 收藏本站
查看: 890|回复: 0

[经验分享] Python基础教程笔记——使用字符串

[复制链接]

尚未签到

发表于 2015-4-22 01:58:07 | 显示全部楼层 |阅读模式
  



使用字符串



Table of Contents




  • 1 基本字符串操作
  • 2 字符串格式化:精简版

    • 2.1 用字符串格式化操作符
    • 2.2 用string的Template格式化字符串


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

    • 3.1 转换说明符
    • 3.2 简单转换
    • 3.3 字段宽度和精度
    • 3.4 符号,对齐和 0 填充


  • 4 字符串方法

    • 4.1 find
    • 4.2 join
    • 4.3 lower
    • 4.4 replace
    • 4.5 split
    • 4.6 strip
    • 4.7 translate





1 基本字符串操作



  • 说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;
  • 注意:字符串是不可变的,所以不能对其进行赋值;
  • 例子
    1:  >>> mystr="Test string"
    2:  >>> mystr[0] = 't'
    3:  Traceback (most recent call last):
    4:  File "", line 1, in
    5:    mystr[0] = 't'
    6:  TypeError: 'str' object does not support item assignment
    7:  >>>



2 字符串格式化:精简版





2.1 用字符串格式化操作符



  • 说明:字符串格式化使用字符串格式化操作符百分号( % )实现,在操作符的左侧是格式化字符串,右侧是希望被格式化的值;
  • 注意:

    • 只有元组和字典可以被格式化为一个以上的值,列表和其他序列会被格式化为一个值;
    • 转换说明符,用于标记需要插入转换值的位置;
    • 如果在格式化字符串中要输出百分号,则需要使用 %%

  • 例子:
    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格式化字符串



  • 说明:类似于Unix Shell中的变量替换,使用substitute方法,将字符串 模板中的$foo替换为传递进来的参数foo
  • 例子:
    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:  >>> 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 "", line 1, in
    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 转换说明符



  • 转换说明符
    转义说明符含义



    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:  #十进制整数
    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:  #限制宽度
    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 填充



  • 说明:

    • 零:宽度不够时用数字0填充;
    • 负号:左对齐;
    • 正号:不管是正数还是负数都标记出符号
    • 空格:宽度不够时用空格填充;

  • 例子:
    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:  >>> 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:  >>> data = list('123456')
    2:  >>> data
    3:  ['1', '2', '3', '4', '5', '6']
    4:  >>> "AB".join(data)
    5:  '1AB2AB3AB4AB5AB6'
    6:  >>>
    7:  



4.3 lower



  • 说明:将字符串转换成小写字母,并返回,但是原字符串不改变;
  • 例子:
    1:  >>> mystr="ABCD"
    2:  >>> mystr.lower()
    3:  'abcd'
    4:  >>> mystr
    5:  'ABCD'
    6:  >>>
    7:  



4.4 replace



  • 说明:返回所有匹配项都被替换之后的字符串
  • 例子:
    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:  >>> 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:  >>> 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



  • 说明:translate是单字替换,可以同时替换多个字符
  • 例子:
    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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59288-1-1.html 上篇帖子: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二) 下篇帖子: python写的批量下载baidu mp3的程序 至少到09-9-18仍然可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表