Python 统计红楼梦、Jane Eyre词频方法

包含去除标点符号和换行、空格等因素

import pandas as pd




def question1():

    words = ['贾宝玉', '宝玉', '林黛玉', '黛玉']

    with open("HLM-UTF-8.txt", 'r', encoding='UTF-8') as r:

        lines = r.readlines()

        with open('result1.txt', 'w', encoding='UTF-8') as w:

            for word in words:

                w.write(word + '出现的行数及行如下:\n')

                for line in lines:

                    if word in line:

                        w.write(str(lines.index(line) + 1) + line)

            w.close()

        r.close()




def question2():

    result = {}

    with open("HLM-UTF-8.txt", 'r', encoding='UTF-8') as r:

        lines = r.readlines()

        for line in lines:

            line = line.strip()

            for char in '!"#$&()*+,-./:;<=>?@[\\]^_{|}·~‘’\n\'"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、 、〃〈〉《》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏﹑﹔·!?。。\u3000':

                line = line.replace(char, "")

            for char in line:

                if char in list(result.keys()):

                    result[char] += 1

                else:

                    result[char] = 1

        df = pd.DataFrame(result, index=[0]).T

        df.to_csv("result2.csv", encoding='utf-8-sig')

        r.close()




def question3():

    result = {}

    with open('JaneEyre.txt', 'r') as r:

        lines = r.readlines()

        for line in lines:

            line = line.lower()

            for char in '!"#$&()*+,-./:;<=>?@[\\]^_{|}·~‘’\u3000\n\'':

                line = line.replace(char, "")

                words = line.split(' ')

            for word in words:

                if word in list(result.keys()):

                    result[word] += 1

                else:

                    result[word] = 1

        del result['']

        df = pd.DataFrame(result, index=[0]).T

        df.to_csv("result3.csv")

        r.close()




if __name__ == '__main__':

    # question1()

    question2()

    # question3()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hinomoto Oniko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值