python对字符串的操作一例

系统补丁的文件名类似于这样:"WindowsServer2003-KB924667-v2-x86-CHS.exe",为了过滤出其中的KB号,我用以下方法:

ab = "WindowsServer2003-KB924667-v2-x86-CHS"
res = ab.split("-")
res1 = res[1].split("KB")
print res1[1]
split()把字符串分割成列表,通过两次分割,得到KB号。

唐唐给出更精简的代码:

ab = "WindowsServer2003-KB924667-v2-x86-CHS"
res = filter(str.isdigit,ab.split("-")[1])
filter(function, iterable)是python内置函数,它根据function参数返回的结果是否为真来过滤list参数中的项,最后返回一个新列表。官方文档: http://docs.python.org/library/functions.html#filter

str.isdigit是系统内建的字符串方法,如果字符串全部是数字就返回true,官方文档在这里:http://docs.python.org/library/stdtypes.html
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在程序里得到系统已经安装的补丁列表:

# 得到系统已经安装的补丁的KB号
p = os.popen("wmic qfe get hotfixid")
patch1 = p.read()
for i in patch1.split('\r\n'):
    i = i.lstrip("KB")   # 去掉开头的"KB"
    patched.append(i.strip())
输出结果:

['HotFixID', '982861', '2305420', '2393802', 982018', '', '']

再要把其中的'HotFixID和后面2个空字符串去掉,在程序中加入判断语句:

# 得到系统已经安装的补丁的KB号
p = os.popen("wmic qfe get hotfixid")
patch1 = p.read()
for i in patch1.split('\r\n'):
    if (cmp(i.strip(), "HotFixID") != 0) and (cmp(i, "") != 0):
        i = i.lstrip("KB")
        patched.append(i.strip())

print patched

注:wmic输出字符串的时候,每行后面都有空格,所以在比较的时候,要用strip()把空格去掉。

现在的输出:

['982861', '2305420', '2393802', 982018]'








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值