从字符串中删除多余的空格(并对其进行计数)

2024-09-30 22:15:30 发布

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

我需要从一个字符串中删除所有多余的空白字符,这样一行中的空白字符不超过1个。我还需要打印一行,其中包含删除的空格字符的最大连续数。在

这就是我目前所拥有的,但它现在所做的就是将字符串返回给我。在

def spaceremover(text):
    for i in range(1,len(text)):
        if i==' ':
            if text[i-1]==' ':
                del i


def spacecounter(text):
    count=0
    maxcount=0
    for i in range(1,len(text)):
        if i==' ':
            if text[i-1]==' ':
                count=count+1
        elif count>maxcount:
           maxcount=count
            count=0
        else: 
            count=0
    return maxcount


def main(text):
    spacecounter(text)
    spaceremover(text)
    text=''.join(text)
    print (text)

text=list(input())
main(text)

Tags: 字符串textinforlenifmaindef
2条回答

通常,我会对其进行正则表达式,但既然已经有人建议,这里有一种更为DIY的方法(仅为完整起见):

def countSpaces(s):
    answer = []
    start = None
    maxCount = 0
    for i,char in enumerate(s):
        if char == ' ':
            if start is None:
                start = i
                answer.append(char)
        else:
            if start is not None:
                maxCount = max(i-start-1, maxCount)
                start = None
            answer.append(char)
    print("The whitespace normalized string is", ''.join(answer))
    print("The maximum length of consecutive whitespace is", maxCount)

输出:

^{pr2}$
>>> import re
>>> s = "foo    bar  baz                        bam"
>>> len(max(re.findall(" +", s), key=len))
24
>>> re.sub(" {2,}", " ", s)
'foo bar baz bam'

相关问题 更多 >