如何计算Python中字符串中每个单词之间的空格数?

时间:2015-12-25 06:33:59

标签: python python-2.7 python-3.x whitespace spaces

我在Hackerrank上遇到this问题,我提出了这个想法,其中包括拆分输入并在之后加入(参见下面的实现)。但是,其中一个测试用例包含输入( hello <多个空格> 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))
  

对于测试用例pic,

enter image description here

8 个答案:

答案 0 :(得分:3)

您可以通过使用模式' '(空格)

进行拆分来修复它
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

答案 1 :(得分:2)

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

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

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

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

然后这样的事情就足够了

s = input()

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

print(spaces)

答案 2 :(得分: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

答案 3 :(得分:1)

对于你的空格问题

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

答案 4 :(得分:0)

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

string_name.count('character')

对于计数空间你应该:

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)
祝你好运

答案 5 :(得分:0)

忘记空间,不是你的问题 您可以使用// Detecting browsers $UA = navigator.userAgent; if ($UA.match(/firefox/i)) { $browser = 'Firefox'; } else if ($UA.indexOf('Trident') != -1 && $UA.indexOf('MSIE') == -1) { $browser = 'MSIE'; } else if ($UA.indexOf('MSIE') != -1) { $browser = 'MSIE'; } else if ($UA.indexOf('OPR/') != -1) { $browser = 'Opera'; } else if ($UA.indexOf("Chrome") != -1) { $browser = 'Chrome'; } else if ($UA.indexOf("Safari")!=-1) { $browser = 'Safari'; } if($UA.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Nokia|Mobile|Opera Mini/i)) { $browser = 'Mobile'; }else if($UA.match(/KFAPWI/i)){ $browser = 'Kindle'; } console.log($browser);将字符串缩减为没有额外空格的单词,这将为您提供单词计数和字符串,即

split(None)

编辑:按照您的链接阅读实际问题后,下次在您的问题中包含相关详细信息,这样可以更加轻松, 你的问题仍然没有计算单词之前,之间或之后的空格数。已经提供了解决特定任务的答案,其形式为:

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

请参阅@Steven Summers提供的答案

答案 6 :(得分:0)

我前一段时间解决了这个问题,只需在分割函数中添加“”(空格),然后打印由空格分隔的每个元素。多数民众赞成。

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

“hello world lol”的分割功能的结果是

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

然后打印每个元素+一个空格。

答案 7 :(得分:0)

方法


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

示例:

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 循环之外,打印黑白单词的空格数。

下面是上述方法的实现:

# 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