Python统计文本文件中字符串出现次数的两种实现方式
本文介绍在Python中统计文本文件内特定字符串出现次数的两种常用方法。首先通过两次split操作处理包含换行符和斜杠分隔符的数据,利用字典累计词频;随后展示使用re.split结合正则表达式一次性分割多种分隔符的更高效方案,并附带完整代码示例及注意事项。
Python统计文件字符串数量:split与正则表达式实战示例
题目要求:
假设有一个txt文件,其内部数据遵循特定的格式结构:
C4D\n\nC4D/maya\n\nC4D\n\nC4D/su\n\nC4D/max/AE
目标是对文件中各个独立的字段(例如C4D、maya等)进行出现次数的统计。
实现思路的第一步是读取文件内容,并将原始数据提取为可用的列表形式:
def getWords(filepath):
file = open(filepath)
wordOne=[]
while(file):
line = file.readline()
word = line.split('/')
wordOne.extend(word)
if(not line): #若读取结束了
break
wordtwo=[]
for i in wordOne:
wordtwo.extend(i.split())
return wordtwo
需要注意的关键点在于,文件中的数据是由换行符“\n”和斜杠“/”两种分隔符共同分割而成的,因此需要进行两次split操作才能完全拆分数据。
接下来定义一个字典用于存储统计结果,遍历提取后的数据并执行计数逻辑,具体代码如下:
def getWordNum(words):
dictWord={}
for i in words:
if(i not in dictWord):
dictWord[i]=0
dictWord[i]+=1
return dictWord
主函数的调用方式如下:
filepath='data/new.txt'
words = getWords(filepath)
dictword = getWordNum(words)
print(dictword)
最终运行结果如下:
{'C4D': 9, 'max': 1, 'su': 1, 'maya': 1, 'AE': 3}
代码逻辑说明:
1,
print(type(word))
print(type(splitData[0]))
输出结果为:
<class 'list'>
<class 'str'>
这里需要理解的是,当执行splitData.extend()之后,原本属于list类型的数据被转换并存储为str类型的元素。只有针对str类型的数据,才能继续使用split函数进行进一步分割。
2,
import os
print(os.getcwd())
此方法可以输出当前代码执行所在的目录位置,对于调试文件读取路径非常有用。
在读取文件并对内容进行切分时,如果涉及的分隔符种类较多,使用re.split()正则表达式分割方法会更加便捷,示例如下:
filepath='data/new.txt'
file = open(filepath) #读取文件
wordOne=[]
symbol = '\n/' #定义分隔符
symbol = "["+symbol+"]" #拼接正则表达式
while(file):
line = file.readline()
word = re.split(symbol,line)
wordOne.extend(word)
if(not line):
break
#通过上式得到的list中会含有很多的空字符串,所以要去空
wordOne = [x for x in wordOne if x]
以上关于Python统计文件中字符串数目的示例分享完毕,希望能为读者提供有效的参考,也欢迎大家继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













