Python:查找平均值

时间:2014-03-12 19:52:42

标签: python

我是python的新手,需要帮助查找平均值,例如:每个句子的平均单词,每个单词的平均字符数,总单词数和句子数等等。我有三个包含大量文本样本的文本文件。这是我到目前为止所做的。

sampleText1 = open("textFile1.txt")
split1 = sampleText1.split(" ")
words1 = len(split1)

我真的只有。我在想,因为我必须为其他两个文本文档重用该代码,也许我应该创建一个函数或类似的东西。我在Stack Overflow上找到了这段代码posted by Inbar Rose。我应该同样使用以下代码吗?

def clean_up(word, punctuation="!\"',;:.-?)([]<>*#\n\\"): 
    return word.lower().strip(punctuation) # you don't really need ".lower()"

def average_word_length(text): 
    cleaned_words = [clean_up(w) for w in (w for l in text for w in l.split())]
    return sum(map(len, cleaned_words))/len(cleaned_words) # Python2 use float

>>> average_word_length(['James Fennimore Cooper\n', 'Peter, Paul and Mary\n'])

我想我需要做这样的事情。谁能帮我找到这些平均值?另外,如果有人知道学习Python的任何好资源,请告诉我。我目前在Lynda.com上使用http://learnpythonthehardway.org/book/,Khan Academy Python视频和Python上的一些视频。

1 个答案:

答案 0 :(得分:1)

所述的问题是询问有关编码的建议而不是找到具体的错误。但是在这种情况下的建议有点难以给出,因为代码的结构(你应该有一个函数来读取数据还是不止一个?)真的取决于你还没有指定的很多其他东西,例如:文本多少(它可以轻松放入内存中吗?你想避免在语料库上多次循环还是没什么大不了的?),你要做多少次计算? ,你正在使用它等等。

文本数量越大,这些问题越多越精致,可以有更微妙的反应。

现在,有点与&#34;如何使其发挥作用&#34;是&#34;我想要做什么&#34;。作为一名数据科学家,我的建议是首先在一个小样本上运行,看看它是否有用。

但是如果你想计算每个句子的平均单词数,可以在一个小样本上尝试这个并迭代它直到它得到你想要的东西:

for sentence in sampleText1.split("."):
    print sentence

这看起来不错吗?也许你想担心省略号......或者不是吗? 如果它看起来很好,那么试着看看:

for sentence in sampleText1.split("."):
    print sentence.split(" ")

这是如何工作的?你想担心双重空间吗?连字符怎么样?等等。? 如果确实看起来不错,那么

sentence_lengths = [len(sentence.split(" ")) for sentence in sampleText1.split(".")]
the_mean = 1. * sentence_lengths.sum() / len(sentence_lengths)
print "average sentence length: %s"%(the_mean)