统计一个大文件单词如何计数|文本文件单词的检索与计数C/C++代码

|

『壹』 用c语言编程,统计文件中出现的单词的次数

#include <iostream>#include <fstream>#include <string>#include <vector>using namespace std;//定义存储单词和出现次数的结构体typedef struct{ string word; int num;}count;int main(){ vector<count> v; //定义count类型的向量,动态存储count变量 count tempstr; //临时存储count变量 tempstr.num=0; //num初始化为0 ifstream in("english.txt"); //打开文件 string temp; //临时变量,存储文件的一行信息 string str; //临时变量,存储单个单词 int count=0; //记录单词字符个数 int j=0; //按行读取文件,对每行信息截取单词并计数 while(getline(in,temp)) { for(int i=0;i<temp.length ();i++) { if((temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z')) count++; //如果是英文字符,则计数加1 else if(count) //单词遇非英文字符时,计数终止,截取单词 { str=temp.substr (i-count,count); //取子串(截取单词) if(v.size ()) //若向量的长度不为0,则将单词与已有单词比较 { for(j=0;j<v.size ();j++) if(str.compare(v[j].word )==0) { v[j].num ++; //单词相同,则将相应单词的数目加1 count=0; //计数变量重新赋值为0,以便记录新的单词 break; } } //end if if(j>=v.size ()) //单词第一次出现,将其添加至向量中 { tempstr.word = str; tempstr.num =1; v.push_back (tempstr); count = 0; //单词添加完毕,计数变量归0,记录新单词 } //end if } //end elseif } //end for } //end while//打印单词及出现次数 for(int i=0;i<v.size ();i++) cout<<"the word is:"<<v[i].word<<", the times is:"<<v[i].num<<endl; return 0;}

『贰』 C语言小白求问。如何读取字符串文件,并根据不同长度的单词统计总共出现的频率

看你问题演示,是统计一段英文文字中,不同单词出现次数(但world明明只出现1次,你演示代码却输出的是2)。

如想统计一段文件中的英文单词出现次数。需实现以下功能:

一、遍历字符串,通过分割符号空格及标点符号获取单词数组。

二、大小写转换,把数组单词全部转换为大写或者小写(识别同一个单词不同大小写)。

三、遍历单词数组,累加统计每个单词数量。(可遍历到第一个单词作为当前统计对象,之后每遍历到相同单词,就将对应变量计数+1,并将该单词字符串置0)。

思路:可先用fopen打开文件流,之后用fgets把全文读出到字符串变量。

之后两个选择:

1、直接变量字符串,遇字母作为一个单词开始,遇非字母作为一个字母结束,这样把所有单词,拆出来放到字符串数组中。(大小写转换可同时进行)。

2、变量字符串将所有标点符号全部替换成空格,再用fprintf写入覆盖原文件,再用循环fscanf(返回-1表示读取结束),将所有以空格间隔的单词直接读取到字符串数组。

最后变量字符串数组。

『叁』 python 文件内容操作,如一个文件100万条数据,查询相同行数

使用open函数逐行读抄取文件,依次对比袭,如包含要求字符串,则数量累加1,读取完成后可统计出行数,代码如下:

n=0forlineinopen('filename','r'):if'固定字符串'inline:n+=1print(n)

说明:

使用 for line in open这种方式可以提高代码效率,如需要更复杂统计,例如重复行,则可以使用hash函数,把行hash值存入列表,再做统计。

『肆』 word文档如何对英文单词计数

推荐用软件Replace Pioneer,可以找出所有单词并可以按词频排序。详细步骤:首先需要把word文档保内存为txt文本文件,然后:容1. 安装并打开Replace Pioneer, 选择Tools->Pattern Counter菜单2. 在上面的Source选择 File/http,然后在右边输入(或选择)txt文本的路径。3. 确定Counter Template选择的是Characters, Words, Lines(默认值)4. 点中第3行Words,然后点击Detail,就可以按照出现次数列出所有词的频率。不仅如此,你可以统计任何模式的出现频率,比如标点符号,单个字符,双字符组合,等等。如果你会正则表达式,你甚至可以统计有多少个词是以s结尾的,多少个词是3个字母的,等等任意统计。

『伍』 文本文件单词的检索与计数C/C++代码

完全原创,已经编译运行确认:创建一个a.txt 存放文本,但是注意,由于时间较紧,所以对于标点符号的处理没有做。#include<conio.h> #include<stdio.h> #include<string.h>#include<ctype.h> #define N 100struct a { char ch[20]; int m;int flag;}; void main() { struct a word[N]={NULL}; int k=0,j=0,i=0,count=1; FILE *fp; char c[20]; if((fp=fopen("a.txt","r"))!=NULL) { while(!(feof(fp))) { fscanf(fp,"%s",word[k].ch); k++; } for(i=0;i<k;i++) { if(word[i].flag!=1){word[i].flag=1;word[i].m++;for(j=i+1;j<k;j++){if((strcmp(word[i].ch,word[j].ch)==0)&&(word[j].flag!=1)) {word[i].m++;word[j].flag=1;}}}} } printf("文本统计结果如下: \n");for(i=0;(word[i].ch!=NULL)&&(i<N);i++){if(word[i].m!=0){printf("%3d. %s,出现了次数:%d次.\n",count,word[i].ch,word[i].m);count++;}}getch();}


赞 (0)