注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

互联网产品经理的窝

梦想社:一个人为了梦想,始终没有停下自己的脚步

 
 
 

日志

 
 

《Python基础教程》学习笔记之[D3]字符串  

2012-05-06 21:49:48|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原文请参考 这里


第三章 字符串

 

 

 

1. 字符串不可修改,无法进行分片赋值

Python代码 
  1. >>> print "Hello %s " %('test')   #%表示需替代的位置,s表示类型  
  2. Hello test   
  3. >>> print "Hello %s" %'test'   #去掉括号也可  
  4. Hello test  
  5. >>>   
  6.   
  7. >>> print "Hell %%s %s" %'test'   #%%输出%  
  8. Hell %s test  
  9.   
  10. >>> from math import pi  
  11. >>> print "Pi with three decimals: %.3f" %pi           #.3表示希望保留的小数位数,f表类型  
  12. Pi with three decimals: 3.142  

 模板字符串  string--Template---substitute

Python代码 
  1. >>> #模板字符串  
  2. >>> from string import Template  
  3. >>> s = Template('$x. glorious $x!')  
  4. >>> s.substitute(x='slurm')  
  5. 'slurm. glorious slurm!'  
  6. >>>   
  7. >>> #如果替换字段是单词的一部分,需要加{}  
  8. >>> s = Template("It's ${x}ful")  
  9. >>> s.substitute(x='beauti')  
  10. "It's beautiful"  
  11. >>>   
  12. >>> #使用字典变量,提供值/名对  
  13. >>> s = Template("A $thing must never $action.")  
  14. >>> d = {}  
  15. >>> d['thing'] = 'gentleman'  
  16. >>> d['action'] = 'show his socks'  
  17. >>> s.substitute(d)  
  18. 'A gentleman must never show his socks.'  
  19. >>>   

 

2. 字符串格式化

 

(1)基本

Python代码 
  1. >>> '%s plus %s equals %s' %(112)                #使用元组替代,注意不能丢掉括号  
  2. '1 plus 1 equals 2'  
  3.   
  4. >>> 'Price of eggs: $%d' %42  # d 和 i 表带符号的十进制数  
  5. 'Price of eggs: $42'  
  6. >>> 'Hexadecimal price of eggs $%x' %42  #x不带符号的十六进制(小写),X大写  
  7. 'Hexadecimal price of eggs $2a'  
  8. >>> from math import pi  
  9. >>> 'Pi: %f...' %pi  #f/F十进制浮点数  
  10. 'Pi: 3.141593...'  
  11. >>> 'Very inexact estimate of pi: %i' %pi #i带符号的十进制数  
  12. 'Very inexact estimate of pi: 3'  
  13. >>> 'Using str: %s' %42L  #s字符串(str),r字符串(repr)  
  14. 'Using str: 42'  
  15. >>> 'Using str: %r' %42L   #r字符串(repr)  
  16. 'Using str: 42L'  

 

(2)字段宽度和精度

Python代码 
  1. >>> #宽度:转换后的值所保留的最小字符个数  
  2. >>> #精度:应包含的小数位数(数字),或转换后的最大字符个数(字符串)  
  3. >>> '%10f' %pi   #字段宽10  
  4. '  3.141593'  
  5. >>> '%10.2f' %pi #字段宽10,精度(小数位)2  
  6. '      3.14'  
  7. >>> '%.2f' %pi   #精度2  
  8. '3.14'  
  9. >>> '%.5s' % 'Hello world'  #精度5,对于字符串来说,就是最多五个字符  
  10. 'Hello'  
  11. >>> '%.*s' % (5'Hello world')  #用*表示精度,值在元组中  
  12. 'Hello'  

 

(3)符号、对齐、0填充——在字段宽度和精度之前可放“标表”,该标表可以使0、+、-、空格

Python代码 
  1. >>> '%010.2f' %pi  #0填充  
  2. '0000003.14'  
  3. >>> '%-10.2f' %pi  #左对齐  
  4. '3.14      '  
  5. >>> print('% 5d' %10) + '\n' + ('%5d' %-10)  #空格,在正数前加空白,方便与负数对齐,<span style="color: #ff0000;">貌似不加也没问题??</span>  
  6.   
  7.   
  8.    10  
  9.   -10  
  10. >>> print('%+5d' %10) + '\n' + ('%+5d' %-10)  #对正负数均标出符号  
  11.   +10  

 

   完整示例

Python代码 
  1. #使用给定的宽度打印格式化后的价格列表  
  2. width = input('Please enter width: ')  
  3. price_width = 10  
  4. item_width = width - price_width  
  5.   
  6. header_format = '%-*s%*s'   #-左对齐,*宽度,s字符串  
  7. content_format = '%-*s%*.2f'  
  8.   
  9. print '=' * width  
  10. print header_format %(item_width, 'Item', price_width, 'Price')  
  11. print '-' * width  
  12.   
  13. print content_format %(item_width, 'Apples', price_width, 0.4)  
  14. print content_format %(item_width, 'Pears', price_width, 0.5)  
  15. print content_format %(item_width, 'Cantaloupes', price_width, 1.92)  
  16. print content_format %(item_width, 'Dried Apricots(16 oz.)', price_width, 8)  
  17. print content_format %(item_width, 'Prunes(4 lbs.)', price_width, 12.3333333)  
  18.   
  19. print '=' * width  
  20.   
  21. #运行结果  
  22. Please enter width: 35  
  23. ===================================  
  24. Item                          Price  
  25. -----------------------------------  
  26. Apples                         0.40  
  27. Pears                          0.50  
  28. Cantaloupes                    1.92  
  29. Dried Apricots(16 oz.)         8.00  
  30. Prunes(4 lbs.)                12.33  
  31. ===================================  

 

3. 字符串方法

Python代码 
  1. >>>#find()子串所在位置的最左端索引  
  2. >>> s = "Hello, how are you? Hello, I'm fine"  
  3. >>> s.find("Hello")         #in只能查找单个字符,而find可查找一个子串  
  4. 0  
  5. >>> s.find("Hello"1)     #提供查找的起始点  
  6. 20  
  7. >>> s.find("you"216#提供查找的起始点和结束点,其中包括起始索引,不包括结束索引  
  8. -1                                   #-1代表未找到  
  9. >>> s.find("you"220#提供查找的起始点和结束点,其中包括起始索引,不包括结束索引  
  10. 15  
  11.   
  12. >>> #join()添加元素来连接列表,只能是字符串  
  13. >>> seq = ['1','2','3','4','5']  
  14. >>> joi = '+'  
  15. >>> joi.join(seq)  
  16. '1+2+3+4+5'  
  17. >>>   
  18. >>> dirs = '''usr''bin''env'  
  19. >>> '/'.join(dirs)  
  20. '/usr/bin/env'  
  21. >>>   
  22.   
  23.   
  24. >>> #lower()返回字符串小写字母  
  25. >>> "I'M A DOCTOR!".lower()  
  26. "i'm a doctor!"  
  27. >>>   
  28. >>> if 'GUMBY'.lower() in ['gumby''smith''jones']: print 'Found it!'  
  29. Found it!  
  30.   
  31. >>> #title()单词首字母大写  
  32. >>> "that's all folks".title()  
  33. "That'S All Folks"  
  34. >>>   
  35. >>> string模块的capwords()  
  36. >>> import string  
  37. >>> string.capwords("that's all, folks")  
  38. "That's All, Folks"  
  39.   
  40. >>> #replace()替换  
  41. >>> 'This is a test'.replace('is'"isn't")  
  42. "Thisn't isn't a test"  
  43.   
  44. >>> #split()分割,join()的逆方法  
  45. >>> 'Using the defalut'.split()  
  46. ['Using''the''defalut']  
  47. >>> '/usr/bin/env'.split('/')  
  48. ['''usr''bin''env']  
  49.   
  50.   
  51. >>> #strip()去除两侧空格  
  52. >>> "     Hello world   test   ".strip()  
  53. 'Hello world   test'  
  54.   
  55. >>> #也可指定需要去除的字符,将其列为参数即可,但是只去除两侧的字符  
  56. >>> '*** Hello * world ***!!!'.strip('*!')  
  57. ' Hello * world '  
  58.   
  59. #translate()同replace()一样,不过只能处理单个字符  
  60. #string模块中的maketrans()函数  
  61. >>> from string import maketrans  
  62. >>> table = maketrans('cs''kz')   #将c换为k,s换为z  
  63. >>> len(table)  
  64. 256  
  65. >>> table[97:123]  
  66. 'abkdefghijklmnopqrztuvwxyz'  
  67. >>> 'this is an incredible test'.translate(table)  #使用table作参数  
  68. 'thiz iz an inkredible tezt'  

 

总结:内容仍然简单,不过效率低,一点东西花了好长时间,需改善。

 

用到的函数

string.capsword(s[,seq])  #以seq分隔字符后,大写第一个字母,再用seq连接

string.maketrans(from, to)

  评论这张
 
阅读(145)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017