计算字符串中单词之间的空格数

2024-03-28 13:52:16 发布

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

我正在Hackerrank上做this问题,我提出了这个想法,包括分割输入并在之后加入它(参见下面的实现)。但是,其中一个测试用例包含输入(hello<;multiple spaces>;world),这会使我的代码崩溃,因为输入字符串在每个单词之间有超过1个空格。所以,我只是想知道是否有人能帮我修复我的代码,我只是想知道如何在Python中计算一个字符串中有多少个空格(尤其是多个空格)。我在Java中发现了如何计算空格,但在Python中没有。为了测试,我附上了照片。

提前谢谢。

我的实现:

input_string = input()

splitter = input_string.split()

final = []

for i in range(0,len(splitter)):
    for j in range(0,len(splitter[i])):
        if(j==0):
            final.append(splitter[i][j].upper())
        else:
            final.append(splitter[i][j])
    # Assumed that there is one space btw each words
    final.append(' ')
print(''.join(final))

For Test case pic,

enter image description here


Tags: 字符串代码inforinputstringlen测试用例
3条回答

我建议做的教程问题是一个快速简单的解决方案。

s = input()
print(s.title())

str.title()将字符串中每个单词的起始字母大写。


现在要回答计算空格的问题,可以使用str.count()),它将获取一个字符串并返回找到的出现次数。

s = 'Hello    World'
s.count(' ')

还有各种其他方法,例如:

s = input()
print(len(s) - len(''.join(s.split())))

s2 = input()
print(len(s2) - len(s2.replace(' ', '')))

然而,count是最容易实现和遵循的。

现在,count将返回总数,如果你在计算每个世界之间的空格数。

这样就足够了

s = input()

spaces = []
counter = 0
for char in s:
    if char== ' ':
        counter += 1
    elif counter != 0:
        spaces.append(counter)
        counter = 0

print(spaces)

您可以通过使用模式' '(空白)拆分来修复它

splitter = input_string.split(' ')

也可以使用.capital()方法,而不是再次拆分标记

s = "hello  world         4lol"
a = s.split(' ')

new_string = ''
for i in range(0, len(a)) :
   new_string = a[i].capitalize() if len(new_string)==0 else new_string +' '+ a[i].capitalize()
print(new_string)

输出:

Hello  World         4lol

为了计算两个单词之间的空格数,可以使用python的正则表达式模块。

import re    
s = "hello       world  loL"
tokens = re.findall('\s+', s)

for i in range(0, len(tokens)) :
    print(len(tokens[i]))

输出:

7
2
import re    
line = "Hello    World  LoL"
total = 0
for spl in re.findall('\s+', line):
    print len(spl)
    total += len(spl) # 4, 2
print total # 6

>>> 4
>>> 2
>>> 6

相关问题 更多 >