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

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.

相关推荐
热点推荐
大学生不慎弄湿同学电脑 紧急下单“JD快修”被收6190元 京东回应:不要上当!

大学生不慎弄湿同学电脑 紧急下单“JD快修”被收6190元 京东回应:不要上当!

闪电新闻
2026-04-16 16:06:11
正式退出,全红婵退出国家队?近况曝光,谁注意周继红的表态

正式退出,全红婵退出国家队?近况曝光,谁注意周继红的表态

懂球社
2026-04-16 14:22:15
张雪峰二婚妻子付幸:几个月婚姻分走数亿,11岁女儿遗产继承复杂

张雪峰二婚妻子付幸:几个月婚姻分走数亿,11岁女儿遗产继承复杂

眼光很亮
2026-03-27 16:04:09
不要彩礼!93年未婚妈妈抱58天新生儿征婚,只要有车有房,引热议

不要彩礼!93年未婚妈妈抱58天新生儿征婚,只要有车有房,引热议

火山詩话
2026-04-10 07:33:37
增重20斤,膀大腰圆,素面朝天,章子怡的狠,从来不在红毯上

增重20斤,膀大腰圆,素面朝天,章子怡的狠,从来不在红毯上

喵喵娱乐团
2026-04-14 16:08:34
给中国银行发去制裁威胁,还不许中国购买伊油,外交部回应不惯着

给中国银行发去制裁威胁,还不许中国购买伊油,外交部回应不惯着

风干迷茫人
2026-04-17 03:01:34
马筱梅眼含泪水回应!买房真因不是自私,汪小菲第一次和张兰同队

马筱梅眼含泪水回应!买房真因不是自私,汪小菲第一次和张兰同队

潮鹿逐梦
2026-03-24 13:13:55
为啥一听说给农民涨养老金,就有一群人激烈反对?真相太沉重

为啥一听说给农民涨养老金,就有一群人激烈反对?真相太沉重

复转这些年
2026-03-14 23:48:05
中化吉林长山化工有限公司复合肥运营协同办公室经理王永潮被查

中化吉林长山化工有限公司复合肥运营协同办公室经理王永潮被查

界面新闻
2026-04-16 09:32:18
“与中国打交道,装腔作势的政治作秀没用”

“与中国打交道,装腔作势的政治作秀没用”

观察者网
2026-04-16 19:14:16
“血脉贲张”不读 xuè mài pēn zhāng!能读对的人寥寥无几

“血脉贲张”不读 xuè mài pēn zhāng!能读对的人寥寥无几

未央看点
2026-04-17 02:36:43
不想访华了?特朗普召回美驻华大使,贝森特狂言:中国“不可靠”

不想访华了?特朗普召回美驻华大使,贝森特狂言:中国“不可靠”

浠浠热评
2026-04-17 01:00:49
巨亏85亿!华谊兄弟走到崩溃边缘

巨亏85亿!华谊兄弟走到崩溃边缘

品牌头版
2026-04-16 17:31:49
上帝之后就是他!穆里尼奥:足坛永远的“奇迹制造机”!

上帝之后就是他!穆里尼奥:足坛永远的“奇迹制造机”!

慢歌轻步谣
2026-04-15 19:34:19
手握43个世界冠军,25岁嫁百亿豪门,7年连生4娃,仍被丈夫宠成宝

手握43个世界冠军,25岁嫁百亿豪门,7年连生4娃,仍被丈夫宠成宝

素衣读史
2026-04-16 20:01:26
二战时,德国为何送中国40万套装备?要走了垂涎已久的三样东西

二战时,德国为何送中国40万套装备?要走了垂涎已久的三样东西

抽象派大师
2026-04-03 14:30:57
蔡振华现状:65岁圆满无遗憾,享受退休生活,唯独37岁儿子让他愁

蔡振华现状:65岁圆满无遗憾,享受退休生活,唯独37岁儿子让他愁

洲洲影视娱评
2026-04-14 13:58:26
汽车广告还能这么拍!理想i8雪山救狐视频火了 网友点赞:太有创意

汽车广告还能这么拍!理想i8雪山救狐视频火了 网友点赞:太有创意

快科技
2026-04-16 10:35:14
新账旧账一起算!一旦台海战争爆发,解放军决不放过台军第333旅

新账旧账一起算!一旦台海战争爆发,解放军决不放过台军第333旅

寻墨阁
2026-03-28 13:58:19
16岁巴西全能神童横空出世,曼城砸4000万欧买人,3大豪门来抢人

16岁巴西全能神童横空出世,曼城砸4000万欧买人,3大豪门来抢人

零度眼看球
2026-04-16 09:10:10
2026-04-17 05:24:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

赵明:智驾之战,看谁在大模型上更高效

头条要闻

特朗普宣布黎以将停火后 以军大规模空袭黎巴嫩

头条要闻

特朗普宣布黎以将停火后 以军大规模空袭黎巴嫩

体育要闻

皇马拜仁踢出名局,但最抢镜的还是他

娱乐要闻

丝芭传媒创始人王子杰去世,享年63岁

财经要闻

海尔与医美女王互撕 换血抗衰谁的生意?

汽车要闻

空间大五个乘客都满意?体验岚图泰山X8

态度原创

时尚
本地
亲子
数码
军事航空

爆火的前额叶梗,让多少年轻人主动确诊「脑残」?

本地新闻

12吨巧克力有难,全网化身超级侦探添乱

亲子要闻

儿子认字还可以吧? 董路的微博视频

数码要闻

荣耀史上最短发布会,发布荣耀史上最强MagicBook数字系列

军事要闻

封锁霍尔木兹海峡后 美释放双重信号

无障碍浏览 进入关怀版