.split python字数

时间:2013-10-16 19:10:37

标签: python string

我需要在一个句子中计算单词。例如,“我遛狗”。将是4个单词,但“我走我的3只狗”只会是4个单词,因为数字不是单词。代码只能计算字母单词。我理解如何通过简单地使用以下内容来计算单词:

len(string.split)

但这不包括数字。是否有一种简单的方法(对于初学者)来说明数字,符号等?谢谢。

5 个答案:

答案 0 :(得分:3)

totalWords = sum(1 for word in line.split() if word.isalpha())

您可以在该行上使用split函数根据空格拆分它。然后使用isalpha函数检查每个单词是否只有字母表。如果是,那么包括1.最后总结所有这些。

答案 1 :(得分:2)

这是另一种选择:

import re

lines = [
    'I walk by dog',
    'I walk my 3 dogs',
    'I walk my Beagle-Harrier' # DSM's example
]

for line in lines:
    words = re.findall('[a-z-]+', line, flags=re.I)
    print line, '->', len(words), words

# I walk by dog -> 4 ['I', 'walk', 'by', 'dog']
# I walk my 3 dogs -> 4 ['I', 'walk', 'my', 'dogs']
# I walk my Beagle-Harrier -> 4 ['I', 'walk', 'my', 'Beagle-Harrier']

答案 2 :(得分:1)

您可以在字符串上使用.isalpha()

len([word for word in sentence.split() if word.isalpha()])

答案 3 :(得分:0)

如果您不想使用.isalpha

sum(not word.isdigit() for word in line.split())

对于每个不是数字的单词,这将返回True;对于每个单词,这将返回False。此代码利用了python True == 1False == 0中的事实,因此您将获得非数字的数量。


如果您对使用int的{​​{1}} - 感到不舒服,可以通过添加bool函数向代码的读者明确说明(这是100%)不需要,但如果您喜欢那样可以使代码更清晰)

int

答案 4 :(得分:0)

由于评论看起来他想要一些不使用.isalpha的东西,我们可以在try / except中运行它。

count = 0
for word in line.split():
    try:
        int(word)
    except ValueError:
        count += 1

我知道它不漂亮,但它正确处理它。