字符频率统计:把每个字符按出现次数和占比排行的实用指南
字频统计就是数清一段文本里每个字符出现多少次、占比多少。本文讲它在密码破译、文本分析和查异常字符上的用法,附真实输入输出例子和排序技巧。
字符频率统计:把每个字符按出现次数和占比排行
字符频率统计做的事很朴素:把一段文本拆成一个个字符,数清每个字符各出现了多少次,再按次数从高到低排好。听起来简单,但它是密码学、文本审查和语言分析里反复用到的一块基本功。下面把它的原理、几个真实场景和容易踩的坑讲清楚。
字符频率到底统计什么
它统计的是单个字符的出现次数,以及这个次数占全文的百分比。这里有两层信息:绝对次数告诉你某个字符出现了几次,占比告诉你它在整段文本里有多突出。
为什么两个都要看?因为脱离总长度的次数会骗人。同样是字母 e 出现 40 次,放在一段 200 字符的便条里它占了五分之一,放在一篇 4000 字符的文章里就只是个零头。所以对比两段不同长度的文本时,要看占比那一列,不能只盯次数。
统计的口径还能调:大小写合不合并、空格算不算、标点算不算,这三个开关决定了同一段文本能给出完全不同的表。
一个真实的输入输出例子
拿英文句子 the cat sat 来跑一遍。关掉空格统计,只看字母,结果是这样:
- t 出现 3 次,占 33.3%
- a 出现 2 次,占 22.2%
- h 出现 1 次
- e 出现 1 次
- c 出现 1 次
- s 出现 1 次
t 一下子冲到最前,因为 the、cat、sat 里都有它。如果把空格也算进去,空格会跳到次数靠前的位置,把字母挤下去。这就是为什么做字母分析前要先关掉空格,这一点后面还会提。
英文里 e 最高:频率分析的基石
英文字母的出现频率不是均匀的。在足够长的普通英文文本里,字母 e 的出现频率最高,大约占 12.7%,接着是 t、a、o、i、n,这个顺序常被记成 e t a o i n。而 q、z、x、j 这些字母加起来还不到 1%。
这个分布稳定到可以拿来破密码。凯撒密码和简单替换密码只是把字母换了个名字,并不改变它们的出现次数,所以密文里频率最高的那个字符,大概率就是 E 被替换后的样子。你可以用 字符频率统计 把密文跑一遍,关掉空格和标点,读出排行最前的字符,再和 e t a o i n 一一对齐,第一批猜测就出来了。一旦确认头号密文字符对应 E,凯撒密码的位移量也就跟着浮出来了。
想验证猜测,可以用 凯撒密码工具 按算出来的位移把整段密文还原一遍,看读不读得通。
排序和占比怎么用
排序是这类工具的核心呈现方式。默认从出现最多的字符排到最少,峰值一眼可见,你不用自己扫一遍数据。配合占比那一列,峰值有多尖也看得清:如果第一名占 30% 而第二名只有 8%,说明这段文本被一个字符强烈主导;如果前几名都在 5% 上下,说明分布比较均匀。
这在工程里也有用。设计 slug、密码策略或优惠码格式时,把几百个样本粘进去,保持标点开启,就能看出连字符、下划线还是数字的比重超出预期。某个分隔符要是在三成位置上都出现,那它已经是个规律,值得标准化,而不是任它随机发生。
查异常字符:中文和混排文本
频率统计还能揪出藏在文本里的异常字符。按 Unicode 码点逐个统计,一个汉字算一个字符,一个 emoji 也算一个字符,而不会被拆成两个代理码元。所以中英混排、夹着符号的文本都能落进同一张排行表。
我自己写中文长稿时常用它查一个毛病:某个字反复出现让句子读起来发平。把全文粘进去,在排行里找「的」和「了」,如果它们的次数高得离谱,就知道该回去删几个。这是字数统计做不到的,因为中文词与词之间不写空格,只有按字符数才能给出真正的逐字频率。如果你要数的是词而不是字,那是另一回事,可以换 词频统计工具 来做。
容易踩的三个坑
第一,做字母分析时还把空格算着。普通文章里空格是出现最多的字符之一,会霸占排行顶端,把你真正想看的字母挤到下面。读字母分布或破密码前,先关掉空格统计。
第二,忘了大小写默认合并。如果你研究的正是大写字母用得多不多,合并统计会把 A 并进 a,答案就被藏起来了。先打开区分大小写再读。
第三,跨文本比次数而不比占比。前面说过,40 次在短便条和长文章里含义天差地别。对比两段文本一律看占比列。
把这三点记住,字符频率统计就能从一个看次数的小工具,变成密码破译和文本审查里靠得住的一步。
Made by Toolora · Updated 2026-06-13