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

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.

相关推荐
热点推荐
贵州从外省引进的15名县委书记,半数已落马

贵州从外省引进的15名县委书记,半数已落马

记录刘杰
2026-08-14 23:13:34
国防部对菲下通牒,尽快拖走破船,不到24小时,马科斯态度变了

国防部对菲下通牒,尽快拖走破船,不到24小时,马科斯态度变了

共工之锚
2026-08-16 00:16:37
乌媒:乌克兰出现由日本人组成的战斗分队,参与俄乌冲突,与俄军作战

乌媒:乌克兰出现由日本人组成的战斗分队,参与俄乌冲突,与俄军作战

扬子晚报
2026-08-16 10:31:45
清华博士刘翔鹏画作再曝离谱细节:长征红军娃娃兵,竟脚踩高帮板鞋

清华博士刘翔鹏画作再曝离谱细节:长征红军娃娃兵,竟脚踩高帮板鞋

小徐讲八卦
2026-08-15 18:10:27
方正县强制要求牌匾必须加注日文,否则就不予办理营业执照?这种做法实在令人反感!

方正县强制要求牌匾必须加注日文,否则就不予办理营业执照?这种做法实在令人反感!

人生录
2026-08-16 00:05:13
大瓜!曝顶流女星劈腿,被演员男友家暴,在家中怒扇巴掌后分手

大瓜!曝顶流女星劈腿,被演员男友家暴,在家中怒扇巴掌后分手

180视角
2026-08-15 14:03:26
刘晓庆私密聊天记录全网疯传,律师:转发的每个人可能都违法了

刘晓庆私密聊天记录全网疯传,律师:转发的每个人可能都违法了

蜉蝣说
2026-08-15 23:47:44
悲痛!不到48小时三名人相继辞世,最大105岁,每一位都让人不舍

悲痛!不到48小时三名人相继辞世,最大105岁,每一位都让人不舍

就一点
2026-08-14 16:07:23
曝75岁郭台铭出轨,女方身份被扒,50岁离异带娃,但手握“王牌”

曝75岁郭台铭出轨,女方身份被扒,50岁离异带娃,但手握“王牌”

社会日日鲜
2026-08-15 09:31:07
北京男生高考710分被全家嘲笑,宴上表弟炫耀985,他拿出通知书!

北京男生高考710分被全家嘲笑,宴上表弟炫耀985,他拿出通知书!

牛锅巴小钒
2026-08-16 01:48:49
美国专家警告,只要中方打响武统第一枪,解决台湾问题仅需96小时

美国专家警告,只要中方打响武统第一枪,解决台湾问题仅需96小时

共工之锚
2026-08-16 00:29:33
尴尬!升学宴群发引发同学断交:一男子不想随礼,直接把私聊发到网上,不料被当事人刷到了

尴尬!升学宴群发引发同学断交:一男子不想随礼,直接把私聊发到网上,不料被当事人刷到了

火山詩话
2026-08-15 19:03:00
随着蒯曼4-3逆转,WTT欧洲大满贯女单4强出炉:国乒军团占3席

随着蒯曼4-3逆转,WTT欧洲大满贯女单4强出炉:国乒军团占3席

侧身凌空斩
2026-08-16 04:01:01
王水牛被爆查出艾滋病,评论区求赐名的女粉丝纷纷注销账号,曾称自己在上海每月开销3-5万

王水牛被爆查出艾滋病,评论区求赐名的女粉丝纷纷注销账号,曾称自己在上海每月开销3-5万

Mr王的饭后茶
2026-08-14 17:45:56
村民举报:自费查出致癌物超标!官方介入核查

村民举报:自费查出致癌物超标!官方介入核查

南方都市报
2026-08-15 16:18:40
越南将军含泪控诉:35万中国军人轮番攻打老山,把这里当成了练兵场,而我们这边可就惨了!

越南将军含泪控诉:35万中国军人轮番攻打老山,把这里当成了练兵场,而我们这边可就惨了!

人生录
2026-08-16 00:05:13
四川业余跑步大神陈毛离世,年仅57岁满身腱子肉,死因曝光太可惜

四川业余跑步大神陈毛离世,年仅57岁满身腱子肉,死因曝光太可惜

健身狂人
2026-08-16 05:24:04
西边的太阳快要落山了:从秦怡刘知侠到郭德纲,同样的逻辑仍在场

西边的太阳快要落山了:从秦怡刘知侠到郭德纲,同样的逻辑仍在场

鲁八两
2026-08-15 11:47:59
舅舅入狱前买了1200股茅台,19年后出狱去兑现,前台瞬间傻眼,只能叫来经理,经理愣住:1200股茅台,现在市值差不多……

舅舅入狱前买了1200股茅台,19年后出狱去兑现,前台瞬间傻眼,只能叫来经理,经理愣住:1200股茅台,现在市值差不多……

品读时刻
2026-08-16 06:05:10
告别百万年薪,华为“天才少年”宁博宇:要去瑞典做博士后

告别百万年薪,华为“天才少年”宁博宇:要去瑞典做博士后

红星新闻
2026-08-15 16:38:56
2026-08-16 11:43:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2060文章数 86关注度
往期回顾 全部

科技要闻

210亿美元,黄仁勋投了马斯克

头条要闻

伊朗三大权力机构负责人罕见会晤 审议国内最新局势

头条要闻

伊朗三大权力机构负责人罕见会晤 审议国内最新局势

体育要闻

体系球员与体系本身

娱乐要闻

李小冉疑承认离婚 多次强调“一个人”

财经要闻

事关8万亿养老金!长周期考核落地中

汽车要闻

杨洋成001号车主 岚图追光S正式上市

态度原创

教育
房产
本地
健康
军事航空

教育要闻

穷人家别再“假富养”了!中学女孩早恋,脖子上已经有草莓了

房产要闻

金茂、招商,海南多个岗位招人!

本地新闻

黄景藏用半刀泥刻瓷都魂

专家解答青少年脊柱侧弯七大问题

军事要闻

特朗普扬言将宣布霍尔木兹为美国领土 伊朗回应

无障碍浏览 进入关怀版