当前位置:首页 » 编程语言 » python文本解析

python文本解析

发布时间: 2022-11-05 02:59:14

‘壹’ python 文本文件数据处理

  1. 分隔日志文件存为小文件

  2. #coding:utf-8

  3. #file: FileSplit.py

  4. import os,os.path,time

  5. def FileSplit(sourceFile, targetFolder):

  6. sFile = open(sourceFile, 'r')

  7. number = 100000 #每个小文件中保存100000条数据

  8. dataLine = sFile.readline()

  9. tempData = [] #缓存列表

  10. fileNum = 1

  11. if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建

  12. os.mkdir(targetFolder)

  13. while dataLine: #有数据

  14. for row in range(number):

  15. tempData.append(dataLine) #将一行数据添加到列表中

  16. dataLine = sFile.readline()

  17. if not dataLine :

  18. break

  19. tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")

  20. tFile = open(tFilename, 'a+') #创建小文件

  21. tFile.writelines(tempData) #将列表保存到文件中

  22. tFile.close()

  23. tempData = [] #清空缓存列表

  24. print(tFilename + " 创建于: " + str(time.ctime()))

  25. fileNum += 1 #文件编号

  26. sFile.close()

  27. if __name__ == "__main__" :

  28. FileSplit("access.log","access")


分类汇总小文件:

#coding:utf-8

#file: Map.py


import os,os.path,re


def Map(sourceFile, targetFolder):

sFile = open(sourceFile, 'r')

dataLine = sFile.readline()

tempData = {} #缓存列表

if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建

os.mkdir(targetFolder)

while dataLine: #有数据

p_re = re.compile(r'(GET|POST)s(.*?)sHTTP/1.[01]',re.IGNORECASE) #用正则表达式解析数据

match = p_re.findall(dataLine)

if match:

visitUrl = match[0][1]

if visitUrl in tempData:

tempData[visitUrl] += 1

else:

tempData[visitUrl] = 1

dataLine = sFile.readline() #读入下一行数据

sFile.close()


tList = []

for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):

tList.append(key + " " + str(value) + ' ')


tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")

tFile = open(tFilename, 'a+') #创建小文件

tFile.writelines(tList) #将列表保存到文件中

tFile.close()


if __name__ == "__main__" :

Map("access\access.log1.txt","access")

Map("access\access.log2.txt","access")

Map("access\access.log3.txt","access")

3. 再次将多个文件分类汇总为一个文件。

#coding:utf-8

#file: Rece.py


import os,os.path,re


def Rece(sourceFolder, targetFile):

tempData = {} #缓存列表

p_re = re.compile(r'(.*?)(d{1,}$)',re.IGNORECASE) #用正则表达式解析数据

for root,dirs,files in os.walk(sourceFolder):

for fil in files:

if fil.endswith('_map.txt'): #是rece文件

sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')

dataLine = sFile.readline()

while dataLine: #有数据

subdata = p_re.findall(dataLine) #用空格分割数据

#print(subdata[0][0]," ",subdata[0][1])

if subdata[0][0] in tempData:

tempData[subdata[0][0]] += int(subdata[0][1])

else:

tempData[subdata[0][0]] = int(subdata[0][1])

dataLine = sFile.readline() #读入下一行数据

sFile.close()


tList = []

for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):

tList.append(key + " " + str(value) + ' ')


tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")

tFile = open(tFilename, 'a+') #创建小文件

tFile.writelines(tList) #将列表保存到文件中

tFile.close()


if __name__ == "__main__" :

Rece("access","access")

‘贰’ 用python读取文本文件,对读出的每一行进行操作,这个怎么写

用python读取文本文件,对读出的每一行进行操作,写法如下:

f=open("test.txt","r")

whileTrue:

line=f.readline()

ifline:

pass#dosomethinghere

line=line.strip()

p=line.rfind('.')

filename=line[0:p]

print"create%s"%line

else:

break

f.close()

‘叁’ 编程纯小白想问一下,要用python进行文本分析(NPL),学习路线应该是怎样的(目标:熟练的分析文献)

先学文本分析的思路方法,
比如文本表示最简单的方式是词袋法,把文本变成向量,每个词是向量的一个维度,所以中文需要分词,Python分词找jieba分词
文本表示向量以后,就可以开始对应你需要的任务,比如做分类聚类关联之类的事。比如垃圾邮件分类就是建模对文本内容判断真或假
不用读文献,有问题网络找博客就行了

‘肆’ 如何使用 Python 正则表达式解析文本文件

试试这个方法:import re
def get_email_list(text):
pattern = re.compile(r'\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b')
email_list = re.findall(pattern, text)
return email_list
print get_email_list(your_text)

‘伍’ Python解析库lxml与xpath用法总结

本文主要围绕以xpath和lxml库进行展开:

一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符

二、lxml的安装、lxml的使用、lxml案例


一、xpath

1.xpath概念

XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标准函数库 。XPath 是 XSLT 中的主要元素 。XPath 是一个 W3C 标准 。


2.xpath节点

xpath有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

节点关系:父、子、兄弟、先辈、后辈。


3.xpath语法

xpath语法在W3c网站上有详细的介绍,这里截取部分知识,供大家学习。

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:


谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:


XPath 通配符可用来选取未知的 XML 元素。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:


通过在路径表达式中使用"|"运算符,您可以选取若干个路径。

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:


4.xpath 轴

轴可定义相对于当前节点的节点集。


5.xpath运算符

下面列出了可用在 XPath 表达式中的运算符:

好了,xpath的内容就这么多了。接下来我们要介绍一个神器lxml,他的速度很快,曾经一直是我使用beautifulsoup时最钟爱的解析器,没有之一,因为他的速度的确比其他的html.parser 和html5lib快了许多。


二、lxml

1.lxml安装

lxml 是一个xpath格式解析模块,安装很方便,直接pip install lxml 或者easy_install lxml即可。


2.lxml 使用

lxml提供了两种解析网页的方式,一种是你解析自己写的离线网页时,另一种 则是解析线上网页。

导入包:


1.解析离线网页:

2.解析在线网页:

那么我们怎么获取这些标签和标签对应的属性值了,很简单,首先获取标签只需你这样做:

然后我们可以,比方说,你要获取a标签内的文本和它的属性href所对应的值,有两种方法,

1.表达式内获取

2.表达式外获取

这样就完成了获取,怎么样,是不是很简单了,哈哈哈。


下面再来lxml的解析规则:



3.lxml案例

为了偷懒,我决定还是采用urllib那篇文章的代码,哈哈哈,机智如我。

‘陆’ python数据挖掘——文本分析

作者 | zhouyue65

来源 | 君泉计量

文本挖掘:从大量文本数据中抽取出有价值的知识,并且利用这些知识重新组织信息的过程。

一、语料库(Corpus)

语料库是我们要分析的所有文档的集合。

二、中文分词

2.1 概念:

中文分词(Chinese Word Segmentation):将一个汉字序列切分成一个一个单独的词。

eg:我的家乡是广东省湛江市-->我/的/家乡/是/广东省/湛江市

停用词(Stop Words):

数据处理时,需要过滤掉某些字或词

√泛滥的词,如web、网站等。

√语气助词、副词、介词、连接词等,如 的,地,得;

2.2 安装Jieba分词包:

最简单的方法是用CMD直接安装:输入pip install jieba,但是我的电脑上好像不行。

后来在这里:https://pypi.org/project/jieba/#files下载了jieba0.39解压缩后 放在Python36Libsite-packages里面,然后在用cmd,pip install jieba 就下载成功了,不知道是是什么原因。

然后我再anaconda 环境下也安装了jieba,先在Anaconda3Lib这个目录下将jieba0.39的解压缩文件放在里面,然后在Anaconda propt下输入 pip install jieba,如下图:

2.3 代码实战:

jieba最主要的方法是cut方法:

jieba.cut方法接受两个输入参数:

1) 第一个参数为需要分词的字符串

2)cut_all参数用来控制是否采用全模式

jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode

jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list代码示例( 分词 )

输出结果为: 我 爱

Python

工信处

女干事

每月 经过 下属 科室 都 要 亲口

交代

24 口 交换机 等 技术性 器件 的 安装

工作

分词功能用于专业的场景:

会出现真武七截阵和天罡北斗阵被分成几个词。为了改善这个现象,我们用导入词库的方法。

但是,如果需要导入的单词很多,jieba.add_word()这样的添加词库的方法就不高效了。

我们可以用jieba.load_userdict(‘D:PDM2.2金庸武功招式.txt’)方法一次性导入整个词库,txt文件中为每行一个特定的词。

2.3.1 对大量文章进行分词

先搭建语料库:

分词后我们需要对信息处理,就是这个分词来源于哪个文章。

四、词频统计

3.1词频(Term Frequency):

某个词在该文档中出现的次数。

3.2利用Python进行词频统计

3.2.1 移除停用词的另一种方法,加if判断

代码中用到的一些常用方法:

分组统计:

判断一个数据框中的某一列的值是否包含一个数组中的任意一个值:

取反:(对布尔值)

四、词云绘制

词云(Word Cloud):是对文本中词频较高的分词,给与视觉上的突出,形成“关键词渲染”,从而国旅掉大量的文本信息,使浏览者一眼扫过就可以领略文本的主旨。

4.1 安装词云工具包

这个地址:https://www.lfd.uci.e/~gohlke/pythonlibs/ ,可以搜到基本上所有的Python库,进去根据自己的系统和Python的版本进行下载即可。

在python下安装很方便,在anaconda下安装费了点劲,最终将词云的文件放在C:UsersAdministrator 这个目录下才安装成功。

五、美化词云(词云放入某图片形象中)

六、关键词提取

结果如下:

七、关键词提取实现

词频(Term Frequency):指的是某一个给定的词在该文档中出现的次数。

计算公式: TF = 该次在文档中出现的次数

逆文档频率(Inverse Document Frequency):IDF就是每个词的权重,它的大小与一个词的常见程度成反比

计算公式:IDF = log(文档总数/(包含该词的文档数 - 1))

TF-IDF(Term Frequency-Inverse Document Frequency):权衡某个分词是否关键词的指标,该值越大,是关键词的可能性就越大。

计算公式:TF - IDF = TF * IDF

7.1文档向量化

7.2代码实战

‘柒’ python什么是文本分析

文本分析是指对文本的表示及其特征项的选取;文本分析是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。
而Python有大量库,例如jieba、jingjia2等能够对文字进行分析。
通过对问半天呢内容的分析,能够在短时间知道一段文字的标签是什么,情感是什么等等。

‘捌’ python 文本文件处理

简单的方法是直接做个正则表达式把文件提出来
s=open("file1.txt","rb").read()
import re
files=re.findall("(?isu)file.*?txt",s)
for f in files:
print "/root/usr/%s"%f
这样不知道能不能满足你的需求。

‘玖’ Python读取文件内容的方法有几种

filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件

‘拾’ python具体在文本处理上怎么用

在诸多软件压缩包中或是项目压缩包中都会存在一个readme.txt文件,其中的内容无非是对软件的简单介绍和注意事项。但是在该文本文件中,内容没有分段分行,是非常冗杂地混在一起。当然处理手段多种多样,而我正好尝试利用Python解决这个问题。另外,这些内容或许对将来爬虫爬下的内容进行处理也是有些帮助的,只不过面对的混乱和处理需求不同而已。
这里的思路很简单,打开一个文本文档,对其中具有两个及两个以上的空格进行处理,即产生换行,另外出现很多的‘=’和‘>>>’也进行处理。这里我尝试处理的是easyGUI文件夹中的read.txt,该文件我复制在了D盘的根目录下。具体的实现代码如下:
def save_file(lister):#将传入的列表保存在新建文件中 new_file = open('new_file','w')#创建并打开文件,文件可写 new_file.writelines(lister)#将列表lister中的内容逐行打印 new_file.close()#关闭文件,且缓存区中的内容保存至该文件中def split_file(filename):#分割原始文件 f = open(filename)#打开该原始文件,默认该文件不可修改 lister = []#初始化一个空列表 for each_line in f: if each_line[:6] != '======' and each_line[:3] != '>>>': #当连续出现六个‘=’或连续三个‘>’时,打印一个换行符,实际体现在else中 each_line.split(' ',1)#当出现两个空格时,分割一次,并在下一行代码中以一行的形式保存在列表中 lister.append(each_line) else:
lister.append('\n')

save_file(lister)
f.close()

split_file('D:\\README.txt')
代码给出了详细的注释。其中得到的新的名为“new_file”的文件保存在默认的Python项目的目录下。当然,可以通过chdir()更改工作目录,使得文件创建在自己指定的位置。

热点内容
linux命令包 发布:2025-01-10 23:54:26 浏览:31
python轮廓 发布:2025-01-10 23:49:23 浏览:177
思科配置线怎么选 发布:2025-01-10 23:48:44 浏览:703
解压水晶泥 发布:2025-01-10 23:27:23 浏览:634
小米摄像头如何改wifi密码 发布:2025-01-10 23:25:14 浏览:114
阿里云服务器首页 发布:2025-01-10 23:24:15 浏览:435
win2003单网卡搭建vpn服务器搭建 发布:2025-01-10 23:21:13 浏览:355
如何制作原始传奇脚本 发布:2025-01-10 23:00:30 浏览:118
小程序免费模板源码下载 发布:2025-01-10 22:55:23 浏览:234
gradle编译jar 发布:2025-01-10 22:54:36 浏览:797