2019-05-06 文件操作 读一个文件,包含英文句子,请统计共多少个不重复的单词

博客主要围绕读取包含英文句子的文件展开,目标是统计文件中不重复单词的数量,并将每个单词及其出现次数打印到另一个文件中,涉及Python文件操作和数据统计。

#读一个文件,包含英文句子,请统计共多少个不重复的单词
#并且在另外一个文件中打印每个单词以及它的出现的次数

with open('/Users/jianpengwang/Desktop/宋华杰/123.txt','r') as f:
	f.seek(0)
	norepeat_word_times=0
	norepead_word=[]
	result={}
	
	for line in f.readlines():
		line_list=line.strip('\n').split(' ')
		for word in  line_list:
			if line_list.count(word)==1:
				norepead_word.append(word)
				norepeat_word_times+=1
			if word not in result:
				result[word]=1
			else:
				result[word]+=1

print('不重复的英文单词个数为:',norepeat_word_times)
print('不重复的英文单词为:',norepead_word)

with open('/Users/jianpengwang/Desktop/宋华杰/123result.txt','w+',encoding='utf-8') as f1:

	for k,v in result.items():
		f1.write('%s出现的次数为:%d'%(k,v))
		f1.write('\n')
		print('%s出现的次数为:%d'%(k,v))
		





 

在C语言中,可以采用以下步骤来计算并统计一个英文文本文件中的单词总数: 1. 打开文件:首先,你需要使用`fopen()`函数打开文件,指定文件路径,以及取模式(如"r"表示取)。 ```c FILE *file = fopen("filename.txt", "r"); ``` 2. 预处理宏定义:为了处理空白字符和标点符号,你可以使用预处理器宏定义,比如`#define`。 ```c #define IS_SPACE(c) ((c) == ' ' || (c) == '\t' || (c) == '\n') #define COUNT_WORDS(buffer, size) \ for(int i = 0, word_count = 0; i < size && buffer[i] != EOF; ++i) { if(IS_SPACE(buffer[i])) { // 如果遇到空格,则开始一个新的单词计数 if(i > 0 && buffer[i - 1] != '\n') word_count++; // 只有非换行符才算词 } else if(buffer[i] == '\n') { // 结束前一个单词并开始新的 word_count++; } } ``` 3. 逐行文件:然后遍历文件内容,通常通过`fgets()`每次取一行,并将数据传递给上面的`COUNT_WORDS`宏进行处理。 ```c char buffer[BUFSIZ]; while(fgets(buffer, sizeof(buffer), file)) { COUNT_WORDS(buffer, strlen(buffer)); } ``` 4. 关闭文件:完成处理后别忘了关闭文件。 ```c fclose(file); ``` 5. 统计结果:最后,`word_count`变量存储了单词总数。 注意,这个例子假设输入文件英文文本,且包含特殊字符。对于更复杂的情况,可能需要对每个单词进行分词(例如,使用正则表达式),并将所有单词转换为小写以避免重复计数。此外,这个实现会区分大小写,如果你希望区分,可以在比较字符之前将其转换为小写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值