我一直在试图找出是否有办法做到这一点
import re
myList = ["a6C"] >>> ["a12C"]
updatedLst=[]
for indx,item in enumerate(myList):
val=(re.findall('\d+', item))
myList[indx]=val
print(myList)
我能做到这一点的一种方法是通过硬编码这样的值 如果项目中为“ 6”:
我想用另一种方式做。我知道没有理由使用这样的混合列表或糟糕的设计……我只想找出解决问题的“方法” /逻辑。感谢您的想法和时间。
答案 0 :(得分:0)
IIUC,使用:
import re
myList = ["a6C"]
for indx, item in enumerate(myList):
myList[indx] = ''.join([str(int(i)*2) if i.isdigit() else i for i in item])
print(myList)
或者:
import re
myList = ["a6C"]
for indx, item in enumerate(myList):
myList[indx] = re.sub('\d+',str(int(re.sub('\D+','',item))*2),item)
print(myList)
答案 1 :(得分:0)
我想出了一个效率不高的版本。
import re
strng="ro5e"
#the following variable finds numeric value and saves in variable num
num=re.findall('\d+',strng)
#for item in strng: will not find numeric value because everything will be String there
#Hence the following approach,iterate num
for i in num:
v=int(i)*2 #using int to convert String to int so that I can multiply
print(strng.replace(i,str(v)))#again converting to str so that I can replace