Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

How to realize the regular expression of counting the number of Chinese / English words by python

Shulou Source: shulou.com Published: 2022-06-02 13:19:31 09月20日 Update

This article mainly introduces python how to achieve statistics of Chinese characters / English word number of regular expression, has a certain reference value, interested friends can refer to, I hope you can learn a lot after reading this article, the following let Xiaobian with you to understand.

Train of thought

Use the regular expression "(? X) (?: [\ w -] + | [\ x80 -\ xff] {3})" to get a list of English words and Chinese characters in the utf-8 document.

Use dictionary to record the frequency of each word / Chinese character, + 1 if it does, and 1 if it doesn't.

Sort the dictionary by value and output.

Source code

#! / usr/bin/python#-*-coding: utf-8-*-# # author: rex#blog: http://iregex.org#filename counter.py#created: Mon Sep 20 21:00:52 2010#desc: convert .py file to html with VIM.import sysimport refrom operator import itemgetterdef readfile (f): with file (f, "r") as pFile:return pFile.read () def divide (c, regex): # the regex below is only valid for utf8 codingreturn regex.findall (c) def update_dict (di) Li): for i in li:if di.has_key (I): Di [I] + = 1else: Di [I] = 1return didef main (): # receive files from bashfiles=sys.argv [1:] # regex compile only onceregex=re.compile ("(? X) (?: [\ w -] + | [\ x80 -\ xff] {3})") dict= {} # get all words from filesfor f in files:words=divide (readfile (f), regex) dict=update_dict (dict) Words) # sort dictionary by value#dict is now a list.dict=sorted (dict.items (), key=itemgetter (1), reverse=True) # output to standard-outputfor I in dict:print I [0], I [1] if _ _ name__=='__main__':main ()

Tips

Because files=sys.argv [1:] is used to receive parameters,. / counter.py file1 file2... The word frequency of the file specified by the parameter can be calculated and output.

You can customize the program. For example,

Use th

Regex=re.compile ("(? X) ([\ w -] + | [\ x80 -\ xff] {3})") words= [w for w in regex.split (line) if w]

The resulting list is a list of words including delimiters, which is convenient for full-text word segmentation later.

Processing files in behavioral units, rather than reading the entire file into memory, saves memory when dealing with large files.

You can use such a regular expression to preprocess the entire file first, removing the possible html tags: content=re.sub (r "] +", ", content), which is more accurate for some documents.

Thank you for reading this article carefully. I hope the article "how to count the regular expression of Chinese characters / English words by python" shared by the editor is helpful to everyone. At the same time, I also hope you can support us and pay attention to the industry information channel. More related knowledge is waiting for you to learn!

Tags: Words files regular Chinese characters articles expressions English statistics memory parameters documents utf-8 processing output precision value full text interests delimiters units Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno NVidia OPPO Reno Docker macOS Shulou Tech Info