首页 > 解决方案 > 如何从Python中的字符串中取出前2位数字

问题描述

我有 2 个字符串:

"SP-1-15::PROVPEC=NTK555EA,CTYPE=\"SP-2\",PEC=NTK555EA,REL= 1  ,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=00-005-20-03,ONSC=00-005-19-50:IS-ANR,FLT"
"SP-1-16::PROVPEC=NTK555FA,CTYPE=\"SP-2 Dual CPU\",PEC=NTK555FA,REL= 1  ,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=UNKNOWN,ONSC=UNKNOWN:IS-ANR,FLT"

我想要两件事:

  1. 如果WRK在字符串中删除1516(SP-1-15 and SP-1-16)相应的。

  2. 如果WRK不在字符串中,则删除在这种情况下为 的奇数值15

标签: python

解决方案


这可以做到re.searchre.sub满足WRK在我曾经.join()找到它的两者中找到它的条件

s = ["SP-1-15::PROVPEC=NTK555EA,CTYPE=\"SP-2\",PEC=NTK555EA,REL= 1  ,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=00-005-20-03,ONSC=00-005-19-50:IS-ANR,FLT", "SP-1-16::PROVPEC=NTK555FA,CTYPE=\"SP-2 Dual CPU\",PEC=NTK555FA,REL= 1  ,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=UNKNOWN,ONSC=UNKNOWN:IS-ANR,FLT"
]

import re

j = ''.join(s)

find_sp = re.compile(r'\d+::', re.I)

for idx, item in enumerate(s):
    if 'WRK' in j:
        s[idx] = re.sub(r'\d+::', '::', item)
    elif 'WRK' not in j:
        num = find_sp.search(item)
        x = num.group(0).strip('::')
        if int(x) % 2:
            s[idx] = re.sub(r'\d+::', '::', item)
        else:
            pass
print(s)
['SP-1-::PROVPEC=NTK555EA,CTYPE="SP-2",PEC=NTK555EA,REL= 1  
,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=00-005-20-03,ONSC=00-005-19-50:IS-
ANR,FLT', 'SP-1-16::PROVPEC=NTK555FA,CTYPE="SP-2 Dual   
CPU",PEC=NTK555FA,REL= 1  
,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=UNKNOWN,ONSC=UNKNOWN:IS-ANR,FLT']

在这里与WRK其中一条线

(xenial)vash@localhost:~/python/stack_overflow$ python3.7 strings.py
['SP-1-::PROVPEC=WRKNTK555EA,CTYPE="SP-2",PEC=NTK555EA,REL= 1   
,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=00-005-20-03,ONSC=00-005-19-50:IS-
ANR,FLT', 'SP-1-::PROVPEC=NTK555FA,CTYPE="SP-2 Dual 
CPU",PEC=NTK555FA,REL= 1
,CLEI=,SER=NNTM,MDAT=UNKNOWN,AGE=UNKNOWN,ONSC=UNKNOWN:IS-ANR,FLT']

推荐阅读