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

Count the number of spaces between words in a string

我在 Hackerrank 上做 this 问题,我想到了这个想法,其中包括拆分输入并在之后加入它(请参阅下面的我的实现)。但是,其中一个测试用例包含输入 (hello< multiple spaces> world),这导致我的代码崩溃,因为输入字符串的每个单词之间有超过 1 个 space。所以,我只是想知道是否有人可以帮我修复我的代码,我只是想知道如何计算 [=31] 中的字符串中有多少 spaces(尤其是多个 spaces) =].我找到了如何在 Java 中计算 spaces,但在 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,

您可以使用 count() 函数来计算特殊字符的重复次数

string_name.count('character')

对于计数 space 你应该 :

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])
    final.append(' ')
count = input_string.count(' ')
print(''.join(final))
print (count)

祝你好运

忘记空格,它们不是你的问题。
您可以使用 split(None) 将字符串缩减为没有多余空格的单词,这将为您提供字数和字符串,即

>>> a = "   hello  world         lol"
>>> b = a.split(None)
>>> len(b)
3
>>> print(" ".join(b))
hello world lol

编辑:在跟随你的link阅读实际问题后,下次在你的问题中包含相关细节,这样更容易全面, 您的问题仍然不是计算单词之前、之间或之后的空格数。已经提供了解决特定任务的答案,形式为:

>>> a= " hello    world  42  lol"
>>> a.title()
' Hello    World  42  Lol'
>>> 

查看@Steven Summers 提供的答案

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

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

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


现在要回答计算空格的问题,您可以使用 str.count()) 它将接受一个字符串和 return 它找到的出现次数。

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

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

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

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

然而,计数是最容易实施和遵循的。

现在,如果您计算的是每个世界之间的空格数,则计数将 return 总数。

那么像这样就足够了

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(' ')

你也可以使用 .capitalize() 方法而不是再次拆分令牌

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

我之前解决了那个问题,只需在拆分函数中添加“”(白色space),然后打印每个元素,用白色space分隔。就这些了。

for i in input().split(" "):
    print(i.capitalize(), end=" ")

与"hello world lol"的split函数结果为

>>> "hello    world    lol".split(" ")
>>>['hello', '', '', '', 'world', '', '', '', 'lol']

然后打印每个元素+一个白色space.

对于你的空格问题

my_string = "hello    world"
spaces = 0
for elem in my_string:
    if elem == " ":
    #space between quotes
    spaces += 1
print(spaces)

接近


给定一个字符串,任务是计算字符串中单词之间的空格数。

示例:

Input: "my name  is geeks for geeks"
Output: Spaces b/w "my" and "name": 1
        Spaces b/w "name" and "is": 2
        Spaces b/w "is" and "geeks": 1
        Spaces b/w "geeks" and "for": 1
        Spaces b/w "for" and "geeks": 1

Input: "heyall"
Output: No spaces

要执行的步骤


  • 从用户输入字符串并剥离字符串以删除未使用的空格。
  • 初始化一个空列表
  • 运行 从 0 到字符串长度的 for 循环
  • 在for循环中,存储所有不带空格的单词
  • 再次在for循环中,用于存储单词的实际索引。
  • for循环外,打印空格数b/w个字。

下面是上述方法的实现:

# Function to find spaces b/w each words
def Spaces(Test_string):
    Test_list = []  # Empty list
    
    # Remove all the spaces and append them in a list
    for i in range(len(Test_string)):
        if Test_string[i] != "":
            Test_list.append(Test_string[i])
            
    Test_list1=Test_list[:]
    
    # Append the exact position of the words in a Test_String
    for j in range(len(Test_list)):
        Test_list[j] = Test_string.index(Test_list[j])
        Test_string[j] = None
        
    # Finally loop for printing the spaces b/w each words.
    for i in range(len(Test_list)):
        if i+1 < len(Test_list):
            print(
                f"Spaces b/w \"{Test_list1[i]}\" and \"{Test_list1[i+1]}\": {Test_list[i+1]-Test_list[i]}")

# Driver function
if __name__ == "__main__":
    Test_string = input("Enter a String: ").strip() # Taking string as input
    
    Test_string = Test_string.split(" ")  # Create string into list
    
    if len(Test_string)==1:
        print("No Spaces")
    else:
        Spaces(Test_string)  # Call function