用正则表达式统计一篇文章中某个单词的出现频率

import re
#在S后面的这个字符串里面输入要统计的字符串
s='123abc456eabc789'
#把这里的a,b,c换成你想要统计的字符串
k=re.findall(r'abc',s)
print(k)
print(len(k))

#对于这个玩意小编也是很服,在很久以前当小编还是个小白的时候找遍全网硬是没有找到怎么表示的方式,当时不知道哪位人才居然为了这个东西用到了第三方库,小编那个时候居然还很崇拜那个博主的思维,说多了都是泪。。。。反正记住python要简单而不要复杂,

优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
 
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
 
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
 
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
 
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
 
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
你好,这是一个问题涉及编程技术的问题。我可以为您提供一些帮助。 1. 统计总共出现了多少个单词: 您可以使用Scanner类读取整篇文章,然后使用正则表达式文章的每个单词提取出来,最后将提取出的单词数量统计即可。 示例代码: Scanner scanner = new Scanner(file); int wordCount = 0; while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] words = line.split("\\W+"); for (String word : words) { wordCount++; } } System.out.println("总共出现了" + wordCount + " 个单词"); 2. 统计有多少个互不相同的单词: 您可以使用Set来存储提取出来的单词,因为Set不允许存储重复的元素,所以可以利用它来统计互不相同的单词数量。 示例代码: Scanner scanner = new Scanner(file); Set<String> wordSet = new HashSet<>(); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] words = line.split("\\W+"); for (String word : words) { wordSet.add(word.toLowerCase()); } } System.out.println("共有" + wordSet.size() + "个互不相同的单词"); 3. 按单词出现频率的大小输出单词: 您可以使用Map来存储单词和它们出现次数,然后按照出现次数进行排序。 示例代码: Scanner scanner = new Scanner(file); Map<String, Integer> wordMap = new HashMap<>(); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] words = line.split("\\W+"); for (String word : words) { String lowerCaseWord = word.toLowerCase(); int count = wordMap.getOrDefault(lowerCaseWord, 0); wordMap.put(lowerCaseWord, count + 1); } } List<Map.Entry<String, Integer>> wordList = new ArrayList<>(wordMap.entrySet()); Comparator<Map.Entry<String, Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue() - o1.getValue(); } }; wordList.sort(comparator); for (Map.Entry<String, Integer> entry : wordList) { System.out.println(entry.getKey() + " 出现了 " + entry.getValue() + " 次"); } 希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值