从文本文件中读取并将字频保存到新文本文件中,每个文本文件都在新行上打印

时间:2017-02-25 08:07:32

标签: python python-2.7 text-files frequency

美好的一天。需要帮助。使用的语言是python。下面的代码从文本文件中读取,然后在新行上返回每个单词的频率。我是从这个网站https://rmtheis.wordpress.com/2012/09/26/count-word-frequency-with-python/

得到的
 <select class="form-control" />

从上面看,它使用(pyCharm)在IDE上打印得很好。但是,当我在上面的代码下面添加以下代码时,

import re
from collections import Counter


def openfile(filename):
    fh = open(filename, "r+")
    str = fh.read()
    fh.close()
    return str


def removegarbage(str):
    # Replace one or more non-word (non-alphanumeric) chars with a space
    str = re.sub(r'\W+', ' ', str)
    str = str.lower()
    return str


def getwordbins(words):
    cnt = Counter()
    for word in words:
        cnt[word] += 1
    return cnt


def main(filename, topwords):
    txt = openfile(filename)
    txt = removegarbage(txt)
    words = txt.split(' ')
    bins = getwordbins(words)
    for key, value in bins.most_common(topwords):

        print(key, value)

main('hamlet.txt', 500)

它确实打印在控制台上,但是显示了一些错误,还有没有写入文本文件我根本创建了。 .Below是一个片段,在读取文本文件后显示控制台上的示例输出,它打印:

#Write to file
    with open("newFile.txt", "w") as f:
        for word in main('hamlet.txt', 500):
            f.write(word + os.linesep)

所以现在,我想将上面的输出写入文本文件。虽然纺织品的内容比上面的长得多。谢谢。顺便说一下,控制台上出现的错误是

the 16
of 12
to 9
search 9
which 6

2 个答案:

答案 0 :(得分:0)

如果你想使用如图所示的函数$client = static::createClient(); $client->request('POST', '/ajax/blahblah', array('data' => 'fruityloops')); $response = $client->getResponse(); $this->assertEquals(200, $response->getStatusCode()); //convert to array $data = json_decode($response->getContent(true), true); var_dump($data); $this->assertArrayHasKey('your_key', $data); ,即

main

然后该功能应该适应这一点。 可以使用例如发电机:

for word in main('hamlet.txt', 500):

答案 1 :(得分:0)

您需要return key, value而不是打印