网易首页 > 网易号 > 正文 申请入驻

Python:字符串方法(词频统计相关)

0
分享至

在文本分析、日志处理、搜索系统以及自然语言处理(Natural Language Processing,NLP)中,词频统计(frequency counting)是最基础也最常见的任务之一。所谓词频统计,就是统计某个词、字符或某类模式在文本中出现了多少次。

词频统计通常要经历以下步骤:

1、文本标准化:统一大小写、去除多余空白、规范字符形式

2、文本清洗:去除标点、噪声字符或无关内容

3、文本切分:将字符串划分为词、行、字段或片段

4、条件筛选:保留需要统计的部分

5、词频统计:用 Counter 或字典统计结果

在这些步骤中,字符串(str)方法承担的是前四步中的核心任务。

一、查找与定位

1、统计子串出现次数

count()

返回子串 sub 在字符串中出现的非重叠次数。

str.count(sub[, start[, end]])

参数说明:

• sub:要统计的子串

• start:可选,起始位置

• end:可选,结束位置

示例:

# 3

count() 适合统计固定子串的出现次数。

但要注意,它统计的是子串匹配,不是“词语边界意义上的单词统计”。

例如:

# 3

2、查找出现的位置

find()

返回子串第一次出现的索引;若不存在,则返回 -1。

str.find(sub[, start[, end]])

参数说明:

• sub:要查找的子串

• start:可选,起始位置

• end:可选,结束位置

示例:

# 7

find() 常用于判断某个关键词是否存在(返回值 ≥ 0)。

rfind()

返回子串最后一次出现的索引;若不存在,则返回 -1。

str.rfind(sub[, start[, end]])

示例:

# 13

3、判断前后缀

startswith()

判断字符串是否以某个前缀开头。返回布尔值。

str.startswith(prefix[, start[, end]])

参数说明:

• prefix:前缀字符串或前缀元组

• start:可选,起始位置

• end:可选,结束位置

示例:

# True

在日志词频统计中,常用于筛选某类记录,例如只统计 "ERROR" 开头的行。

endswith()

判断字符串是否以某个后缀结尾。返回布尔值。

str.endswith(suffix[, start[, end]])

示例:

# True

说明:可用于筛选具有某种后缀特征的文本项。

二、规范化与清洗

词频统计前,常需要对字符串进行标准化处理。否则同一个词可能因为大小写、空白或字符形式不同而被统计成多个不同项。

1、大小写转换

lower()

返回全部字母转为小写后的新字符串。

str.lower()

示例:

# apple apple apple

说明:英文词频统计中非常常用。如果不做小写化处理,Apple、apple、APPLE 会被当成不同词。

upper()

返回全部字母转为大写后的新字符串。

str.upper()

说明:虽然词频统计中更常见的是 lower(),但在某些标记统一场景中也会用到 upper()。

casefold()

返回更适合做大小写无关比较的字符串。

str.casefold()

示例:

# apple apple

说明:对于一般英文文本,lower() 已经够用;但从“文本归一化”的角度说,casefold() 更适合做严格的大小写无关处理。

2、去除空白字符

strip()

去除字符串两端的指定字符,默认去除空白字符。返回处理后的新字符串。

str.strip([chars])

参数说明:

• chars:可选,要删除的字符集合

示例:

print(text.strip())

输出:

apple banana

说明:在处理逐行文本、日志文件或用户输入时非常常用。如果行首行尾残留空格,可能会影响统计一致性。

lstrip()/rstrip()

分别去除左侧或右侧空白字符(或指定字符)。

str.rstrip([chars])

说明:适合处理只需单侧清洗的场景。

3、删除前后缀

以下两个方法是 Python 3.9+ 新增方法。

removeprefix()

如果字符串以指定前缀开头,则删除此前缀;否则原样返回。

str.removeprefix(prefix)

示例:

# file not found

说明:适合统一处理日志前缀、标签前缀。

removesuffix()

如果字符串以指定后缀结尾,则删除该后缀;否则原样返回。

str.removesuffix(suffix)

示例:

# running

说明:适合去除句尾标点或固定后缀。

4、常规替换

replace()

将字符串中的子串 old 替换为 new。返回替换后的新字符串。

str.replace(old, new[, count])

参数说明:

• old:旧子串

• new:新子串

• count:可选,最大替换次数

示例:

print(cleaned)

输出:

hello world

replace() 常用于:

• 去除标点

• 统一特殊符号

• 将多个分隔符统一成同一种分隔符(如空格)

• 对缩写或变体进行规范化处理

5、高效替换

replace() 适合少量替换,而 translate() 可以基于字符映射表一次性完成大量字符替换或删除,因此在文本清洗中通常更高效。

maketrans()

生成一个字符转换表(translation table),用于 translate() 方法。

str.maketrans(x[, y[, z]])

参数说明:

z → 删除

translate()

按照 maketrans() 创建的映射规则对字符串进行批量替换或删除。返回处理后的新字符串。

str.translate(table)

参数说明:

• table:字符映射表

示例 1:删除标点符号

print(clean_text)

输出:

Hello world Python is great

string.punctuation 包含常见 ASCII 标点:

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

translate() 结合 string.punctuation 可以快速删除标点。

示例 2:字符删除

print(text.translate(table))

输出:

color favor

示例 3:中文标点清理

print(text.translate(table))

输出:

人工智能正在改变世界机器学习深度学习迅速发展

三、切分与重组

词频统计最核心的预处理之一,就是把原始字符串切分为“可统计单元”。

1、切分

split()

将字符串按分隔符切分为列表。

str.split(sep=None, maxsplit=-1)

参数说明:

• sep:分隔符;默认 None 表示按任意空白字符切分

• maxsplit:最大切分次数

示例:

print(words)

输出:

['apple', 'banana', 'orange', 'apple']

说明:英文文本处理中最常见。默认情况下,split() 会把连续空白视为一个分隔边界,因此非常适合基础单词切分。

例如:

print(text.split())

输出:

['apple', 'banana', 'orange', 'apple']

rsplit()

与 split() 类似,但从右边开始控制切分次数。

str.rsplit(sep=None, maxsplit=-1)

说明:在普通词频统计中不如 split() 常用,但在解析结构化文本时有价值。

splitlines()

按行边界切分文本。返回由各行组成的列表。

str.splitlines(keepends=False)

参数说明:

• keepends:是否保留换行符

示例:

print(text.splitlines())

输出:

['apple', 'banana', 'orange']

说明:适用于按行处理文本文件。

2、连接

join()

用当前字符串作为分隔符,将序列中的字符串拼接起来。

str.join(iterable)

参数说明:

• iterable:字符串可迭代对象

示例:

print(text)

输出:

natural language processing

说明:join() 常用于规范化后重新构造文本,将清洗后的词列表重新组织。

四、条件判断

这些函数常用于在统计前进行筛选。

isalpha()

如果字符串中所有字符都是字母且非空,则返回 True。

可用于英文文本中过滤掉包含数字或符号的项。

isdigit()

若字符串全为数字字符且非空,则返回 True。

可用于统计数字型词项,或在文本清洗时排除纯数字项。

isalnum()

若字符串全由字母和数字构成且非空,则返回 True。

在清洗混合文本时很常用。

isspace()

若字符串全为空白字符且非空,则返回 True。

可用于过滤空白项。

示例:

print("        ".isspace())  # True

小结

在词频统计任务中,str 类型的方法主要用于文本查找、清洗、规范化与切分,是构建统计流程的基础工具。通过 count()、lower()、replace()、split()、strip() 等函数,可以将原始文本整理为可统计的词项;再结合 Counter 或分词工具,便可完成英文或中文文本的基础词频分析。


点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
九旬独居老人去世无人继承遗产,法院指定民政局管理

九旬独居老人去世无人继承遗产,法院指定民政局管理

封面新闻
2026-09-05 19:06:14
心理学的赚钱铁律:一个人能不能发家,从不看学历,不看出身,更不看运气,核心在于悟透这两步财富逻辑

心理学的赚钱铁律:一个人能不能发家,从不看学历,不看出身,更不看运气,核心在于悟透这两步财富逻辑

心理观察局
2026-08-30 07:03:18
曝景甜口中的剧组夫妻:顶流男星剧组追过4位85花,成功率高达50%

曝景甜口中的剧组夫妻:顶流男星剧组追过4位85花,成功率高达50%

梦醉为红颜一笑
2026-09-03 08:11:32
养老金月入过万群体的心声:年轻人不生娃,不交社保,自私自利,还拖垮了社会养老体系

养老金月入过万群体的心声:年轻人不生娃,不交社保,自私自利,还拖垮了社会养老体系

舒山有鹿
2026-08-09 11:56:27
2026年的上海,大家都穷到什么地步了?

2026年的上海,大家都穷到什么地步了?

经济学教授V
2026-08-24 18:52:50
为了那一哆嗦,这些人连命都不要了?网友经历一个比一个离谱

为了那一哆嗦,这些人连命都不要了?网友经历一个比一个离谱

另子维爱读史
2026-07-28 20:26:27
上半年中美印新生儿数据:美172万,印1120万,中国多少?

上半年中美印新生儿数据:美172万,印1120万,中国多少?

一个幻想者
2026-08-05 14:38:51
他是建国初期地位最高的大将:实权大过粟裕,曾与八位元帅并列

他是建国初期地位最高的大将:实权大过粟裕,曾与八位元帅并列

浩渺青史
2026-09-05 20:06:38
越扒越有!家长群报官职后续:纪检介入,猛料流出,荒唐事在后头

越扒越有!家长群报官职后续:纪检介入,猛料流出,荒唐事在后头

社会日日鲜
2026-09-05 07:05:25
如果当初梁思成的方案被采纳,也许今天的北京是这个样子的

如果当初梁思成的方案被采纳,也许今天的北京是这个样子的

浩渺青史
2026-09-02 02:48:33
大开眼界!许家印当年奢靡生活曝光

大开眼界!许家印当年奢靡生活曝光

麦杰逊
2026-08-23 15:09:25
真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

娱你同欢
2026-07-31 23:28:29
歼16刚刚动身回国,俄方立即派苏57去埃及阻击:这一场他们输不起

歼16刚刚动身回国,俄方立即派苏57去埃及阻击:这一场他们输不起

铁锤侃侃而谈
2026-09-05 10:59:23
“走面”风波迎来大结局!韩红宣布告别公益行业,留几手早就料到

“走面”风波迎来大结局!韩红宣布告别公益行业,留几手早就料到

青橘罐头
2026-06-30 16:53:21
“韩国考虑向霍尔木兹海峡派遣海军”,韩媒披露原因

“韩国考虑向霍尔木兹海峡派遣海军”,韩媒披露原因

参考消息
2026-09-05 17:29:04
1600多吨黄金沉入贝加尔湖,俄罗斯不敢打捞,我国专家:没那胆子。

1600多吨黄金沉入贝加尔湖,俄罗斯不敢打捞,我国专家:没那胆子。

回京历史梦
2026-09-05 10:56:33
吃饭时婆婆突然说:下周你小叔子一家要搬过来,我平静地点头:行啊,正好我妈也想我了,我回娘家。当晚我就叫来了搬家公司

吃饭时婆婆突然说:下周你小叔子一家要搬过来,我平静地点头:行啊,正好我妈也想我了,我回娘家。当晚我就叫来了搬家公司

晓艾故事汇
2026-09-03 17:26:33
25号台风2天后就到,24号台风逼近24小时警戒线!暴雨大暴雨确定

25号台风2天后就到,24号台风逼近24小时警戒线!暴雨大暴雨确定

王姐懒人家常菜
2026-09-06 03:24:11
为什么往死里扫黄?网友分享太真实了,一次说透

为什么往死里扫黄?网友分享太真实了,一次说透

另子维爱读史
2026-05-27 20:16:03
税收4亿,工资26亿:财政没钱,为什么编内待遇不能动?

税收4亿,工资26亿:财政没钱,为什么编内待遇不能动?

混沌录
2026-07-23 17:11:06
2026-09-06 05:11:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2136文章数 86关注度
往期回顾 全部

科技要闻

华为何庭波,再次更新韬定律论文

头条要闻

江西遂川泥石流1死11失联 男子:母亲电话一直打不通

头条要闻

江西遂川泥石流1死11失联 男子:母亲电话一直打不通

体育要闻

本西蒙斯加盟国王,不管怎样,回来就好

娱乐要闻

阿Sa蔡卓妍首度求婚细节,感动落泪

财经要闻

被曝试药后死亡,药企董事竟怒怼记者

汽车要闻

千里浩瀚H5/30英寸大屏 星越L PLUS让你看到油车越级的一面

态度原创

本地
手机
游戏
亲子
公开课

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

手机要闻

华为Pura 90系列未加入涨价潮:价格最稳的华为影像旗舰

发售时间迎来新线索!《龙珠》新作或明年初就能玩到

亲子要闻

AI造娃?生殖专家开发“智能扫精术”,无精症患者都能硬找出蝌蚪生?

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版