我创建了一个函数,可以计算字符串中的字符数,但它也计算空格。
这是我的代码:
def count_characters_in_string(mystring):
string_1 = mystring
print("The number of characters in this string is:", len(string_1))
count_characters_in_string("Apples and Bananas")
有没有办法不计算空格?
这个不会在内存中创建虚假的
list
或str
,使用sum
,str.isspace
,以及issubclass(bool, int)
:这一事实
def count_characters_in_string(mystring):
return sum(not c.isspace() for c in mystring)
您可以
split
字符串(不指定分隔符意味着根据任何空格进行分割),然后将结果字符串的长度相加
def count_characters_in_string(string):
return sum([len(word) for word in string.split()])
print("The number of characters in this string is:", count_characters_in_string("Apples and Bananas"))
编辑:根据@schwobaseggl的有用建议,我创建了该函数的3个版本并对它们进行计时以找出
map
选项实际上是最快的
def count_characters_in_string(string):
return sum([len(word) for word in string.split()])
def count_characters_in_string_gen(string):
return sum(len(word) for word in string.split())
def count_characters_in_string_map(string):
return sum(map(len, string.split()))
%timeit count_characters_in_string("Apples and Bananas")
718 ns ± 21.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit count_characters_in_string_gen("Apples and Bananas")
812 ns ± 13.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit count_characters_in_string_map("Apples and Bananas")
607 ns ± 19.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
使用这个:
def count_characters_in_string(input_string):
letter_count = 0
for char in input_string:
if char.isalpha():
letter_count += 1
print("The number of characters in this string is:", letter_count)
这也有效:
def count_characters_in_string(input_string):
letter_count = len(input_string.replace(" ",""))
print("The number of characters in this string is:", letter_count)
当你运行时:
count_characters_in_string("Apple Banana")
它会输出:
"The number of characters in this string is: 11"
你可以做一件简单的事情,用相同的字符串创建一个新变量,替换该字符串上的所有空格,然后你就可以得到两个字符串的长度并得到差异。
string1 = "asd asd asd asd asd"
string2 = string1
string2.replace(" ", "")
size1 = len(string1)
size2 = len(strgin2)
size3 = size1 - size2
干杯
您对
len
的
list comprehension
有何看法?
def count_characters_in_string(mystring):
return len([character for character in mystring if character.isalpha()])
解决方案之一可能是迭代字符并检查它是否不是空格,然后增加计数,如下所示:
def count_characters_in_string(mystring):
count = 0
for x in mystring:
if x !=' ':
count+=1
return count
res = count_characters_in_string("Apples and Bananas")
print(res)