如何使用Python计算字符串中没有空格的字符数?

问题描述 投票:0回答:6

我创建了一个函数,可以计算字符串中的字符数,但它也计算空格。

这是我的代码:

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")

有没有办法不计算空格?

python python-3.x string count character
6个回答
3
投票

这个不会在内存中创建虚假的

list
str
,使用
sum
str.isspace
,以及
issubclass(bool, int)

这一事实
def count_characters_in_string(mystring):
    return sum(not c.isspace() for c in mystring)

3
投票

您可以

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)

0
投票

使用这个:

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"

0
投票

你可以做一件简单的事情,用相同的字符串创建一个新变量,替换该字符串上的所有空格,然后你就可以得到两个字符串的长度并得到差异。

string1 = "asd asd asd asd asd"
string2 = string1
string2.replace(" ", "")
size1 = len(string1)
size2 = len(strgin2)
size3 = size1 - size2

干杯


0
投票

您对

len
list comprehension
有何看法?

def count_characters_in_string(mystring):
    return len([character for character in mystring if character.isalpha()])

0
投票

解决方案之一可能是迭代字符并检查它是否不是空格,然后增加计数,如下所示:

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)
© www.soinside.com 2019 - 2024. All rights reserved.