python中读取txt文件、统计其中所有字母出现的频度_使用python统计目标词在文件中出频度的实现方法...

人生苦短,我用Python.用了不会,来到segment.

我是一个python 初学者,想要实现一个“模块”,可以让用户输入某个单词,然后就可以得到它在文本中出现的次数。

试了一个下午,但由于自学,有些地方自己不是很懂,在google上,以及http://stackoverflow.com/ 上,没有找到适合自己的答案。(大多都是统计所有单词的次数,以及有些局部的函数自己不是很明白) 所以,把自己想法写想法,请教一下大家,如何写这样一个模块。

我想要实现的效果

让用户输入:

input the word: love

输出结果:

love was found 520 times

1.这是自己写的一个程序,运行错误,但不知道怎么改?

import re

def count_unique_word(filename):

word = input ("Input the word:")

for word in open(filename).read().split():

count = len (re.findall (word,'sketch.txt'))

print "%s was found %d times" % (word, count)

运行结果:

>>> import os

>>> os.chdir('/Users/apple/Desktop/Python/chapter')

>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 读取输入字符串。 2. 建立一个字典,用于存储每个字符出现频度。 3. 遍历输入字符串,对于每个字符,如果它已经在字典中出现过,则将其对应的频度加1;否则,在字典添加该字符,并将其频度设为1。 4. 将字典的键值对按照键的字典序排序。 5. 将结果写入文件,每行一个字符及其出现频度,格式为“字符:频度”。 Python代码实现: ``` def count_chars_frequency(input_str, output_file): freq_dict = {} for char in input_str: if char in freq_dict: freq_dict[char] += 1 else: freq_dict[char] = 1 sorted_freq = sorted(freq_dict.items(), key=lambda x: x[]) with open(output_file, 'w') as f: for char, freq in sorted_freq: f.write(f"{char}:{freq}\n") ``` 调用示例: ``` input_str = "hello world" output_file = "result.txt" count_chars_frequency(input_str, output_file) ``` 输出结果: ``` :1 d:1 e:1 h:1 l:3 o:2 r:1 w:1 ``` ### 回答2: 首,我们要明确本次统计字符是指ASCII码表字符。 算法步骤如下: 1. 定义一个包含256个元素的散列表(数组),对应ASCII码表的每一个字符,初始化每个元素的值为0。 2. 读入输入字符串,逐个字符地遍历字符串。 3. 对于每个遍历到的字符,将对应的散列表元素的值加1。 4. 遍历结束后,将散列表所有元素的下标和值按顺序写入输出文件。 Java实现代码如下: ```java import java.io.*; import java.util.Arrays; public class CharFrequency { public static void main(String[] args) throws Exception { String inputFileName = "input.txt"; // 读入文件名 String outputFileName = "output.txt"; // 输出文件名 int[] frequency = new int[256]; // 散列表 BufferedReader reader = new BufferedReader(new FileReader(inputFileName)); int ch; while ((ch = reader.read()) != -1) { frequency[ch]++; } reader.close(); PrintWriter writer = new PrintWriter(new FileWriter(outputFileName)); for (int i = 0; i < 256; i++) { if (frequency[i] > 0) { writer.println((char) i + "\t" + frequency[i]); } } writer.close(); } } ``` 在该代码,我们利用了Java提供的BufferedReader和PrintWriter类读写文件,用int数组frequency作为散列表统计字符出现的频率。最后将结果输出到文件。 ### 回答3: 首,我们需要了解字符串和频率的概念。字符串是由一系列字符组成的,例如“hello world”就是一个字符串,它包含11个字符。频率是指某个事件在一定时间内发生的次数,例如在50次投掷硬币中出现正面的频率为0.5。 接下来,我们需要设计一个算法来统计字符每个字符出现的频率。这个算法可以分为以下几个步骤: 1. 声明一个变量freq,用来存储每个字符出现的频率。 2. 遍历输入字符串的每个字符,如果这个字符在freq已经存在,就将它的频率加1;如果不存在,就将它添加到freq,并将它的频率初始化为1。 3. 将freq的每个字符和它的频率输出到文件,格式为“字符:频率”。 下面是Python代码实现: ```python def char_frequency(input_string): freq = {} for char in input_string: if char in freq: freq[char] += 1 else: freq[char] = 1 with open('result.txt', 'w') as file: for char in freq: file.write(char + ':' + str(freq[char]) + '\n') ``` 这个函数接受一个字符串作为参数,返回值为空。它的主要功能是统计字符每个字符出现的频率,并将结果存储在result.txt文件。可以使用以下代码来调用这个函数: ```python input_string = 'hello world' char_frequency(input_string) ``` 执行完这段代码后,将会在当前目录下生成一个result.txt文件,它的内容为: ``` h:1 e:1 l:3 o:2 :1 w:1 r:1 d:1 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值