我有一个textfile列表,其示例如下:
ALEX
MIKE
JOSHUA
AMBER
ALEX
ROBERT
CHRIS
ALEX
JOSHUA
MICHAEL
ROOGER
ALEX
AMBER
我想计算每个单词的写入次数。
示例:
alex (4)
MIKE (1)
JOSHUA (2)
AMBER (2)
etc..
如何在记事本++中做到这一点?
答案 0 :(得分:2)
没有内置词频率计数器。可用的RegExp操作不允许插入计数变量。
智能突出显示的构建仅显示实际线路的所有出现。查找对话框的count functionallity也是如此(匹配单词的所有实例,将显示count,然后重复)。对于简短的列表,这样的单步可能有效。
除非您要编写新插件或某些外部程序,否则使用网络服务可能是一种快速解决方案(Word Frequency Counter或WordCounter)。
在Unix / Linux上,sort file.txt | uniq -c | sort -nr
会提供预期的结果。
答案 1 :(得分:1)
虽然我不知道在不使用 Python 脚本或其他插件的情况下在通常的数字系统(例如十进制或二进制)中执行此操作的简单方法,但我认为我可以在 {{3} },我在这个过程中得到了一个免费的条形图:)
对于所有替换,选择“正则表达式”,“.匹配换行符”未选中;根据需要选中或取消选中“Match case”。
Edit -> Line Operations -> Sort Lines Lexicographically Ascending
”订购行^
替换为 1
以在每行开头加 11(.+)\R(?=1\1)
替换为 1
以删除重复项,同时保留 1s^(1*)
替换为 \1
以在计数后添加一个空格Edit -> Line Operations -> Sort Lines Lexicographically Descending
”按计数排序我这样写是为了不将 AALEX 和 ALEX 处理为重复项,而且还使 Regex 可以一次性完成,而无需重复点击替换。
如果您的某些词以 1
开头,这显然不起作用;如果是这种情况,只需使用文本中未出现的其他字符作为计数字符即可。
我喜欢这种方法,在行首使用一元数,因为:
^(1*)(.+)$
替换为 \2 \(\1\)
Sel : 7
)因此,在您的示例中,这将给出:
1111 ALEX
11 JOSHUA
11 AMBER
1 ROOGER
1 ROBERT
1 MIKE
1 MICHAEL
1 CHRIS
或者:
ALEX (1111)
JOSHUA (11)
AMBER (11)
ROOGER (1)
ROBERT (1)
MIKE (1)
MICHAEL (1)
CHRIS (1)