写一个函数,实现遍历一个数字和字母参杂的字符串,如果碰到字母则替换成*,最后*隔开的数字作为整体计算求和。 如”ab34aa243dd78eww89”,则替换成*的结果为:”**34**243*...

方法一:

s= "ab34aa243dd78eww89"

result =""

count =0

flag=False

for i in s:

    if i>='a' and i<="z":

        if flag=True:

            result+=str(count)

            flag=False

            count=0

        result+="*"

    else:

        flag=True

        count+=int(i)

if count !=0:

    result+=str(count)

print (result)

方法二:

# encoding = UTF-8

import re

s= "ab34aa243dd78eww89"

result =""

s=re.sub(r"[a-z]","*",s)

arr1=re.split("\\*+",s) #['', '34', '243', '78', '89']

for i in range(len(arr1)):

    count=0

    if arr1[i].isdigit():

        for j in arr1[i]:

            count+=int(j)

    if count!=0:

        arr1[i] = str(count)

arr2=re.split("\\d+",s)#['**', '**', '**', '***', '']

for i in range(len(arr1)):

    result+=arr1[i]+arr2[i]

print(result)

方法3:

def get_data(data):

    result=""

    for i in data:

        if i.isalpha():

            result+="*"

        else:

            result+=i

    return result

def get_sum(num):

    result=""

    temp=num.split("*")

    for i in temp:

        sum1=0

        if len(i)==0:

            result+="*"

        elif len(i)==1:

            result+=i

        else:

            for j in i:

                sum1+=int(j)

            result+=str(sum1)

    return result

if __name__=="__main__":

    data1="ab34aa243dd78eww89"

    result1=get_data(data1)

print(get_sum(result1))

你可能感兴趣的:(写一个函数,实现遍历一个数字和字母参杂的字符串,如果碰到字母则替换成*,最后*隔开的数字作为整体计算求和。 如”ab34aa243dd78eww89”,则替换成*的结果为:”**34**243*...)