使用正则表达式在 Python 中进行字数统计

发布于 2024-11-07 12:19:46 字数 196 浏览 3 评论 0原文

使用正则表达式计算文档中英文单词的正确方法是什么?

我尝试过:

words=re.findall('\w+', open('text.txt').read().lower())
len(words)

但似乎我遗漏了几个单词(与 gedit 中的字数相比)。 我做得对吗?

多谢!

What is the correct way to count English words in a document using regular expression?

I tried with:

words=re.findall('\w+', open('text.txt').read().lower())
len(words)

but it seems I am missing few words (compares to the word count in gedit).
Am I doing it right?

Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

坏尐絯℡ 2024-11-14 12:19:46

使用 \w+ 将无法正确计算包含撇号或连字符的单词,例如“can't”将被计为 2 个单词。它还会计算数字(数字串); “12,345”和“6.7”各算作 2 个单词(“12”和“345”、“6”和“7”)。

Using \w+ won't correctly count words containing apostrophes or hyphens, eg "can't" will be counted as 2 words. It will also count numbers (strings of digits); "12,345" and "6.7" will each count as 2 words ("12" and "345", "6" and "7").

赏烟花じ飞满天 2024-11-14 12:19:46

这似乎按预期工作。

>>> import re
>>> words=re.findall('\w+', open('/usr/share/dict/words').read().lower())
>>> len(words)
234936
>>> 
bash-3.2$ wc /usr/share/dict/words
  234936  234936 2486813 /usr/share/dict/words

你为什么要小写你的话?这和计数有什么关系?

我认为以下内容会更有效:

words=re.findall(r'\w+', open('/usr/share/dict/words').read())

This seems to work as expected.

>>> import re
>>> words=re.findall('\w+', open('/usr/share/dict/words').read().lower())
>>> len(words)
234936
>>> 
bash-3.2$ wc /usr/share/dict/words
  234936  234936 2486813 /usr/share/dict/words

Why are you lowercasing your words? What does that have to do with the count?

I'd submit that the following would be more efficient:

words=re.findall(r'\w+', open('/usr/share/dict/words').read())
蹲墙角沉默 2024-11-14 12:19:46

一旦您通过 _words_list = Words.split() 获得单词列表或通过正则表达式或其他方法进行所需的处理,您可以使用以下方法轻松获得单词计数:

import numpy as NP
import pandas as PD

_counted_words = PD.Series(NP.array(_words_list)).value_counts()

Once you have list of words by _words_list = words.split() or required processing through regex or other methods, you can easily get a count of words with the following method:

import numpy as NP
import pandas as PD

_counted_words = PD.Series(NP.array(_words_list)).value_counts()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文