『壹』 用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=0
forlineinopen('filename','r'):
if'固定字元串'inline:
n+=1
print(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 100
struct 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();
}