Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1786098
  • 博文数量: 413
  • 博客积分: 8399
  • 博客等级: 中将
  • 技术积分: 4325
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-09 10:44
文章分类

全部博文(413)

文章存档

2015年(1)

2014年(18)

2013年(39)

2012年(163)

2011年(192)

分类: LINUX

2012-02-29 21:29:59

在python版看到一个小题目:
有以下字符串:
IP="189.11.17.1", NM="255.255.0.0", ENTID=1, MCC=460, MNC=3, MSCID="0x36720B", MAXSDB=0, MINUATI24="0x0", MTZDSTS=NO, AIFTYP=TDM, APVER=IOS4.1;
如何获取到各个等号后面的值,保存到一个列表中返回?

我的答案:
  1. def str_fun():
  2.     str2 = 'IP="189.11.17.1", NM="255.255.0.0", ENTID=1, MCC=460, MNC=3, MSCID="0x36720B", MAXSDB=0, MINUATI24="0x0", MTZDSTS=NO, AIFTYP=TDM, APVER=IOS4.1;'

  3.     lists = []
  4.     for tuples in [s.partition('=') for s in str2[:-1].split(',')]:
  5.         lists.append(tuples[2].strip())
  6.     print lists

  7. strs = 'IP="189.11.17.1"'
  8. print strs.partition('=')
  9. print "the results:"
  10. str_fun()
运行结果:
  1. ('IP', '=', '"189.11.17.1"')
  2. the results:
  3. ['"189.11.17.1"', '"255.255.0.0"', '1', '460', '3', '"0x36720B"', '0', '"0x0"', 'NO', 'TDM', 'IOS4.1']
例2:
  1. mylist = []
  2. strs2 = "123|222|www:rwe"
  3. for s in strs2.replace(':', '|').split('|'):
  4.     mylist.append(s)
  5. print mylist
在CU的python版看到一例很典型的,也很隐蔽的bug:  
  1. def strQ2B(ustring):
  2.     """把字符串全角转半角"""
  3.     rstring = ""
  4.     for uchar in ustring:
  5.         inside_code=ord(uchar)
  6.         if inside_code==0x3000:
  7.             inside_code=0x0020
  8.         else:
  9.             inside_code-=0xfee0
  10.         if inside_code<0x0020 or inside_code>0x7e: #转完之后不是半角字符返回原来的字符
  11.             rstring += uchar
  12.         rstring += unichr(inside_code)
  13.     return rstring

  14. def strB2Q(ustring):
  15.     """把字符串半角转全角"""
  16.     rstring = ""
  17.     for uchar in ustring:
  18.         inside_code=ord(uchar)
  19.         if inside_code<0x0020 or inside_code>0x7e: #不是半角字符就返回原来的字符
  20.             rstring += uchar
  21.         if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0
  22.             inside_code=0x3000
  23.         else:
  24.             inside_code+=0xfee0
  25.         rstring += unichr(inside_code)
  26.     return rstring
if -- if -- else 的用法有误。可改成: if -- elif -- else 或者样用continue也可 


阅读(1328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~