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

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-06 06:52:57
周文强被抓了,良币驱逐劣币的时代正在来临

周文强被抓了,良币驱逐劣币的时代正在来临

创始人笔记
2026-09-05 00:10:58
奇迹!郑钦文2-1逆转,决胜盘0-5到7-5,杀进美网16强,322万奖金

奇迹!郑钦文2-1逆转,决胜盘0-5到7-5,杀进美网16强,322万奖金

侃球熊弟
2026-09-06 01:45:21
第一批戴运动手环的“受害者”出现了……

第一批戴运动手环的“受害者”出现了……

都市快报橙柿互动
2026-09-05 01:13:55
美国梦碎、欧洲躺平、中国内卷:普通人阶层跨越的终极真相(2026深度好文)

美国梦碎、欧洲躺平、中国内卷:普通人阶层跨越的终极真相(2026深度好文)

经济学教授V
2026-09-03 19:17:17
王楚钦再创历史,将成第一个把世界第一拱手送给日本的国乒运动员

王楚钦再创历史,将成第一个把世界第一拱手送给日本的国乒运动员

人类的关注
2026-09-06 04:32:21
22岁女子结婚2个月,感觉和情夫更和谐,2011年让情夫杀死了丈夫

22岁女子结婚2个月,感觉和情夫更和谐,2011年让情夫杀死了丈夫

汉史趣闻
2026-09-05 16:10:04
当孩子说“再玩10分钟”时,你的第一句话,决定了他20年后的人生

当孩子说“再玩10分钟”时,你的第一句话,决定了他20年后的人生

户外阿毽
2026-09-05 12:14:10
哈兰德一剑封喉,独享队史第1人!1.45亿欧先生首秀,曼城1-0升班马

哈兰德一剑封喉,独享队史第1人!1.45亿欧先生首秀,曼城1-0升班马

钉钉陌上花开
2026-09-05 23:52:19
美网|最强的郑钦文回来了!决胜盘0比5落后时上演史诗级逆转

美网|最强的郑钦文回来了!决胜盘0比5落后时上演史诗级逆转

上观新闻
2026-09-06 03:58:36
男孩真正开窍的黄金年龄,大多集中在这3个阶段,家长别急着放弃

男孩真正开窍的黄金年龄,大多集中在这3个阶段,家长别急着放弃

户外阿毽
2026-09-05 07:36:49
高校思政专职教师数量越多,我们离诺贝尔奖越远

高校思政专职教师数量越多,我们离诺贝尔奖越远

细雨中的呼喊
2026-09-05 07:04:43
与博彩平台达成合作!詹姆斯14秒短片引争议 大量球迷抗议要求删帖

与博彩平台达成合作!詹姆斯14秒短片引争议 大量球迷抗议要求删帖

罗说NBA
2026-09-05 22:04:26
扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

夜深爱杂谈
2026-09-05 21:28:52
山东一股民1000元买入宇树科技,死扛13天,彻底绝望了

山东一股民1000元买入宇树科技,死扛13天,彻底绝望了

财经智多星
2026-09-06 07:11:29
全场0射正!夏窗豪掷3.6亿欧 8亿豪门天崩开局 3轮0进球只拿1分

全场0射正!夏窗豪掷3.6亿欧 8亿豪门天崩开局 3轮0进球只拿1分

狍子歪解体坛
2026-09-06 00:06:56
从135到98,肚子瘪下去才明白:内脏脂肪最怕的,从来不是跑步

从135到98,肚子瘪下去才明白:内脏脂肪最怕的,从来不是跑步

健身狂人
2026-09-06 02:07:39
武汉大学举报再升级,纪检介入,更荒唐的还在后面

武汉大学举报再升级,纪检介入,更荒唐的还在后面

手工制作阿爱
2026-09-06 03:36:55
德甲乒乓球:樊振东时隔1年完成“复仇”,一单2分率队3-1完胜强敌

德甲乒乓球:樊振东时隔1年完成“复仇”,一单2分率队3-1完胜强敌

乒谈
2026-09-05 21:56:27
伟大的2-1逆转!郑钦文赢麻了:排名飙升+322万奖金+重返金花前三

伟大的2-1逆转!郑钦文赢麻了:排名飙升+322万奖金+重返金花前三

大秦壁虎白话体育
2026-09-06 02:12:08
2026-09-06 09:03:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2137文章数 86关注度
往期回顾 全部

科技要闻

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

头条要闻

牛弹琴:9月初的深圳 干了一件很不寻常的事

头条要闻

牛弹琴:9月初的深圳 干了一件很不寻常的事

体育要闻

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

娱乐要闻

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

财经要闻

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

汽车要闻

带升降立标MPV 岚图梦想家9预售价42.99万起

态度原创

数码
亲子
教育
公开课
军事航空

数码要闻

谷歌Pixel Watch 5智能手表获iFixit 9分可维修性评价

亲子要闻

上幼儿园的后劲儿太大了,第一天没有家长陪着独自入园

教育要闻

动线定值问题,一个视频学会!

公开课

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

军事要闻

俄罗斯建"粉碎大日本帝国"纪念碑 日本急了

无障碍浏览 进入关怀版