首页 / PYTHON / python练习册0004题
python练习册0004题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python练习册0004题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2810字,纯文字阅读大概需要5分钟。
内容图文
![python练习册0004题](/upload/InfoBanner/zyjiaocheng/850/81fd2302817243a6b4acfe239dcb52ce.jpg)
在任意一个英文文档中,统计单词出现的次数,
分析:
本题不是很难,单词通常以空格隔开,但是有些单词后面跟一些特殊符号,只需把这些特殊符号替换掉就可以了,
代码一
1 import re 2 3 file_name = 'code.txt' 4 5 lines_count = 0 6 words_count = 0 7 chars_count = 0 8 words_dict = {} 9 lines_list = [] 10 11 with open(file_name, 'r') as f: 12 for line in f: 13 lines_count = lines_count + 1 14 chars_count = chars_count + len(line) 15 match = re.findall(r'[^a-zA-Z0-9]+', line) 16 17 #正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)语法: 18 for i in match: 19 # 只要英文单词,删掉其他字符 20 line = line.replace(i, ' ') 21 lines_list = line.split() 22 for i in lines_list: 23 if i not in words_dict: 24 words_dict[i] = 1 25 else: 26 words_dict[i] = words_dict[i] + 1 27 28 print('words_count is', len(words_dict)) 29 print('lines_count is', lines_count) 30 print('chars_count is', chars_count) 31 32 for k, v in words_dict.items(): 33 print( k, v)
该代码有些啰嗦,网上找的,说下思路把,利用正则表达式找到所有的不是字母也不是数字的数据保存下来,然后再访问文本中的数据,将非字母和数字的数据替换为空
弱弱的说一句,直接替换掉不就完了。
代码二:
这是本人所写的,较代码一稍微简洁些;
import re f=open("code.txt",'r') s=f.read() s.replace("[^a-zA-Z]",' ') s=s.split() word={} for i in s: if i not in word: word[i]=1 else: word[i]=word[i]+1 for k,v in word.items(): print(k,v)
代码三:
你以为你写的够简洁了吗?不,python早就帮你封装好函数了。
点开才能看。
![python练习册0004题 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024635806.jpg)
![python练习册0004题 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024635901.jpg)
import collections import re def calwords(path): word = [] with open(path) as file: data = file.readlines() for line in data: word += re.split(' |,',line.strip('\n')) print(collections.Counter(word)) if __name__ == '__main__': calwords('e://code.txt')View Code
用到的方法说明
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组) 语法:findall(pattern, string, flags=0) string的replace方法,用后一个参数替换字符串中的前一个参数。
string.split方法
str.split() 单一分隔符,使用str.split()即可 str.split不支持正则及多个切割符号,不感知空格的数量 re.split() 多个分隔符,复杂的分隔情况,使用re.split 原型: re.split(pattern, string, maxsplit=0) 通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。 eg: >>>a='w w w' >>>import re 1.空格分 >>>re.split(r'[\s]',a) ['w','w','w'] 2.只分割一次 >>>re.split(r'[\s]',a,1) ['w','ww'] 3.多个字符分割 >>>c='w!w@w%w^w' >>>re.split(r'[!@%^],c) ['w','w','w','w','w'] 4.还原?: >>>re.split(r'(?:!@%^),c) ['w!w@w%w^w']
描述 Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
couter 是一个容器,可以统计列表中元素的出现次数.
内容总结
以上是互联网集市为您收集整理的python练习册0004题全部内容,希望文章能够帮你解决python练习册0004题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。