我需要创建一个函数来计算给定短语中的字符(包括标点符号和空格)和单词的数量。到目前为止,我已经创建了一个可以计算字符数的函数,但是它也包括空格并且不计算单词。如何排除空格并实现字数统计?
text = " If I compare myself to someone else, then I am playing a game
I will never win. "
def count_chars_words(txt):
chars = len(txt.replace(' ',''))
words = len(txt.split(' '))
return [words,chars]
print(count_chars_words(text))
output [19, 63]
答案 0 :(得分:1)
通过用replace(' ','')
去除文本中的空格,然后获取字符串的长度来计数字符。
通过将句子分为单词列表并检查列表的长度来对单词计数。
然后,在列表中同时返回两者。
text ="If I compare myself to someone else, then I am playing a game I will never win."
def count_chars_words(txt):
chars = len(txt.replace(' ',''))
words = len(txt.split(' '))
return [words,chars]
print(count_chars_words(text))
输出:
[17, 63]
要了解replace()
和split()
的用途,
>> text.replace(' ','')
'IfIcomparemyselftosomeoneelse,thenIamplayingagameIwillneverwin.'
>> text.split(' ')
['If', 'I', 'compare', 'myself', 'to', 'someone', 'else,', 'then', 'I', 'am', 'playing', 'a', 'game', 'I', 'will', 'never', 'win.']
答案 1 :(得分:0)
函数string.split()
对您可能有用!它可以使用一个字符串,查找您要输入的任何字符串的每个实例(例如" "
),然后将字符串拆分为由" "
分隔的每组字符的列表(按字数划分)。有了这个,您应该可以继续!
"If I compare myself to someone else, then I am playing a game I will never win.".split(" ")
给予
['If', 'I', 'compare', 'myself', 'to', 'someone', 'else,', 'then', 'I', 'am', 'playing', 'a', 'game', 'I', 'will', 'never', 'win.']
答案 2 :(得分:0)
为了避免计算空格,您是否考虑过使用if
语句?您可能会在这里发现string.whitespace
和in
运算符有用!
对于单词计数,string.split
是您的朋友。实际上,如果您首先将单词分开,是否有一种简单的方法可以避免上面提到的if
?
答案 3 :(得分:0)
这只是一个想法,而不是有效的方法,如果您需要一种使用正则表达式的好方法:
text ="If I compare myself to someone else, then I am playing a game I will never win."
total_num = len(text)
spaces = len([s for s in text if s == ' '])
words = len([w for w in text.split()])
print('total characters = ', total_num)
print('words = ', words)
print('spaces=', spaces)
print('charcters w/o spaces = ', total_num - spaces)
输出:
total characters = 79
words = 17
spaces= 16
charcters w/o spaces = 63
编辑:使用正则表达式效率更高:
import re
chars_without_spaces = re.findall(r'[^\s]', text) # charcters w/o spaces
words = re.findall(r'\b\w+', text) # words