我在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,
答案 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
要执行的步骤
下面是上述方法的实现:
# 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