如何用新值替换字符串中的旧值?

2024-09-24 22:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以问题是,如果一个句子中给定的单词以同一个字符开头和结尾,我会删除这个字符,并继续这样做,直到它们不再相同或长度小于3

示例:aabaa->;aba->;b

这不是问题所在,所以现在我应该用原始字符串中的“b”替换单词“aabaa”

我唯一的问题是这个句子没有空格。例如:

信任,就是一切-&燃气轮机;罗斯,是,一切。

还要注意的是(. , ! ? ; :)等字符将被忽略,但必须在最终输出中出现

到目前为止,我已经写了这篇文章,但它并不满足上面的例子:

s1 = str(input())
sentence = s1.split()

news = []
ignorabelCharacters = ['.',',','!','?',';',':']
helpList = []
for i in range(len(s1)):
    if s1[i] in ignorabelCharacters:
        helpList.append([s1[i],i])


for i in sentence:
    i = str(i)
    j = 0
    while j < len(i):
        if i[j] in ignorabelCharacters:
            i = i.replace(i[j],' ').strip()
            j+=1
        else:j+=1
    news.append(i)
s2 =' '.join(news)
newSentence = s2.split()


def checkAgain(newSentence):
    newNewSentance = []
    count = []
    x=0
    for i in newSentence:
        j = len(i)
        while j > 2:
            if i[0].lower() == i[-1]  or i[0].upper() == i[-1]:
                i = i[1:-1]
                j-=2
                x+=2
            else:
                break
        count.append(x)
        newNewSentance.append(i)
        x=0
    return [newNewSentance,count]

newNewSentence = checkAgain(newSentence)[0]
count = checkAgain(newSentence)[1]



def finalProcessing(newNewSentence,sentence,newSentence):
    finalSentence = []
    for i in range(len(sentence)):
        if len(newNewSentence[i]) == len(sentence[i]):
            finalSentence.append(newNewSentence[i])
        else:
            x = len(sentence[i]) - len(newSentence[i])
            if x ==0:
                finalSentence.append(newNewSentence[i])
            else:
                value = newNewSentence[i] + sentence[i][-x:]
                finalSentence.append(value)
    return finalSentence

finalSentence = finalProcessing(newNewSentence,sentence,newSentence)

def finalPrint(finalSentece):
    for i in range(len(finalSentece)):
        if i == len(finalSentece) -1:
            print(finalSentece[i],end='')
        else:
            print(finalSentece[i],end= ' ')

finalPrint(finalSentence)

Tags: inforlenifcount字符elsesentence
1条回答
网友
1楼 · 发布于 2024-09-24 22:29:39

这种方法与你的不同,但我会这样做

def condenseWord(w):
    ln = len(w)
    while ln >= 3:
        if w[0].lower() == w[-1].lower():
            w = w[1:-1]
            ln = len(w)
        else:
            break
    return w   

def collapseString(s):
    sep_chars = {' ', ',', '.', ';', ':', '!', '"', "'"}
    out = r''
    wdstrt = 0
    lstltr = 0
    for i in range(len(s)):
        if s[i] in sep_chars:
            ck = condenseWord(s[wdstrt:i])
            out += ck 
            out += s[i]
            wdstrt = i+1
            lstltr = i+1
        else:
            lstltr = i
    out += s[wdstrt:lstltr]
    return out    

然后
collapseString('aabaa')->;'b',和
collapseString('Trust,is,all.' )->;'罗斯,是的,是的

相关问题 更多 >