如何用python提取txt文件中的特定信息并写入Excel

源代码:
https://github.com/julis-wolala/TextdataHandler

问题描述:
我有一个这样的数据集叫test_result_test.txt,大概几百上千行,两行数据之间隔一个空行。
在这里插入图片描述

N:505904X:0.969wsecY:0.694wsec

N:506038X:4.246wsecY:0.884wsec

N:450997X:8.472wsecY:0.615wsec

...

现在我希望能提取每一行X:和Y:后面的数字,然后保存进Excel做进一步的数据处理和分析
就拿第一行来说,我只需要0.969 和0.694。每一行三个数字的具体位置是不确定的,因此不能用固定的列数去处理,刚好发现split函数能对文本进行切片,所以这里我们用这个函数来提取需要的数字信息。
split函数语法如下:

1、split()函数
语法:str.split(str="",num=string.count(str))[n]

参数说明:
str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:表示选取第n个分片

注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

于是对于我们这里的文本,我们可以先用“:”切片,把文本分成三份,比如对于第一行
在这里插入图片描述
以“:”进行切片得到
在这里插入图片描述
取第三个分片进行“w”切片,得到
在这里插入图片描述
这里的第一分片就是我们要的X坐标

最后我们分析一下思路:

  1. 首先定位文件位置
  2. 读取txt文件内容,去掉空行保存
  3. Excel准备工作,新建Excel表格,并编辑好标题为写入数据就位
  4. 对于每一行数据,首先用‘:’进行切片,再用‘w’切片得到想要的数字,然后写入Excel保存

工具:
安装好python模块的visual studio 2017
包:os,xlwt

操作:
先import我们所需要的包

import os
import xlwt
  1. 找到我们想要处理的文件,因此去到指定的位置,定位好文件
a = os.getcwd() #获取当前目录
print (a) #打印当前目录
os.chdir('D:/') #定位到新的目录,请根据你自己文件的位置做相应的修改
a = os.getcwd() #获取定位之后的目录
print(a) #打印定位之后的目录
  1. 打开我们的txt文件查看下里面的内容(这一步可有可无)
#读取目标txt文件里的内容,并且打印出来显示
with open('test_result1.txt','r') as raw:
	for line in raw:
		print (line)
  1. 去除空白行并保存
#去掉txt里面的空白行,并保存到新的文件中
with open('test_result1.txt','r',encoding = 'utf-8') as fr, open('output.txt','w',encoding= 'utf-8') as fd:
	for text in fr.readlines():
		if text.split():
			fd.write(text)
	print('success')

执行完毕同个位置下多了一个txt文件
在这里插入图片描述
4. 创建一个Excel文件

#创建一个workbook对象,相当于创建一个Excel文件
book = xlwt.Workbook(encoding='utf-8',style_compression=0)
'''
Workbook类初始化时有encoding和style_compression参数
encoding:设置字符编码,一般要这样设置:w = Workbook(encoding='utf-8'),就可以在excel中输出中文了。默认是ascii。
style_compression:表示是否压缩,不常用。
'''
  1. 创建一个sheet对象
# 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheet = book.add_sheet('Output', cell_overwrite_ok=True)
# 其中的Output是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False
  1. 在表格里添加好基本的数据标题,我这里是X和Y坐标
# 向表中添加数据标题
sheet.write(0, 0, 'X')  # 其中的'0-行, 0-列'指定表中的单元,'X'是向该单元写入的内容
sheet.write(0, 1, 'Y')
  1. 多次切割数据并定位好需要的部分保存进Excel
#对文本内容进行多次切片得到想要的部分
n=1
with open('output.txt','r+') as fd:
	for text in fd.readlines():
		x=text.split(':')[2]
		y=text.split(':')[3]
		print (x.split('w'))
		print (y.split('w'))
		sheet.write(n,0,x.split('w')[0])#往表格里写入X坐标 
		sheet.write(n,1,y.split('w')[0])#往表格里写入Y坐标
		n = n+1
# 最后,将以上操作保存到指定的Excel文件中
book.save('Output.xls')  

现在定位到之前定义的文件位置,发现又多了一个Excel表格,打开Excel,想要的数据齐齐整整的排好躺在里面,舒服~
在这里插入图片描述
在这里插入图片描述
此时数据为文本格式,想要进一步的处理请用Excel转换成数字格式

Reference:
https://blog.csdn.net/sinat_28576553/article/details/81275650

  • 60
    点赞
  • 443
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 可以使用Python的openpyxl模块来对Excel特定数据进行提取写入新表格。具体操作包括打开目标Excel文件、找到特定数据所在的单元格、将数据提取出来并保存到一个变量、创建一个新表格或者打开一个已有的表格、将提取出的数据写入新表格的指定位置。 ### 回答2: Excel是办公软件常用的电子表格软件,它可以帮助我们高效地进行数据录入、处理和分析,而Python是一种高效、易于学习和使用的编程语言。结合PythonExcel的优势,可以方便地对Excel表格数据进行提取和处理。 下面将介绍利用PythonExcel特定数据进行提取写入新表的方法: 1. 安装PythonPython提供了许多强大的库,其操作Excel表格的常用库是openpyxl,可以使用pip install openpyxl命令来安装该库。 2. 加载Excel表格 可以使用openpyxl库的load_workbook()函数来加载Excel表格,该函数需要指定Excel表格的文件路径,代码示例如下: ``` import openpyxl # 加载Excel表格 workbook = openpyxl.load_workbook(filename="example.xlsx") ``` 3. 定位工作表 在Excel,每个工作表都有一个唯一的名称,可以使用workbook对象的worksheet属性来定位工作表,代码示例如下: ``` # 定位工作表 worksheet = workbook["Sheet1"] ``` 其,“Sheet1”是工作表的名称,可以根据实际的需求进行修改。 4. 提取特定数据 可以使用cell()函数来提取单元格数据,该函数需要指定单元格的行和列,代码示例如下: ``` # 提取单元格数据 cell_value = worksheet.cell(row=2, column=3).value ``` 其,row和column参数分别表示要提取的单元格的行和列,可以根据实际的需求进行修改。 5. 写入新表 可以创建一个新的Excel表格,并在其写入提取特定数据。可以使用openpyxl库的Workbook()函数来创建新的Excel表格,使用create_sheet()函数创建工作表,使用cell()函数写入单元格数据,代码示例如下: ``` import openpyxl # 加载Excel表格 workbook = openpyxl.load_workbook(filename="example.xlsx") # 定位工作表 worksheet = workbook["Sheet1"] # 提取特定数据 cell_value = worksheet.cell(row=2, column=3).value # 创建新的Excel表格 new_workbook = openpyxl.Workbook() # 创建工作表 new_worksheet = new_workbook.create_sheet(title="New Sheet") # 写入单元格数据 new_worksheet.cell(row=1, column=1, value=cell_value) # 保存Excel表格 new_workbook.save(filename="new.xlsx") ``` 其,“New Sheet”是新工作表的名称,“new.xlsx”是存储新Excel表格的文件名,可以根据实际的需求进行修改。 通过以上步骤,就可以方便地利用PythonExcel表格特定数据进行提取写入新表了。需要注意的是,在进行数据提取写入时,要根据Excel表格数据的具体结构进行代码编写,确保数据能够正确地提取写入。 ### 回答3: Python是一门在数据处理领域十分出色的编程语言,对于Excel数据提取写入来说也是非常便捷的。下面,本文将分步骤详细介绍如何利用PythonExcel特定数据进行提取写入新表。 1. 安装所需的库 首先,我们需要安装openpyxl库,它是Python处理Excel表格数据的好工具,可以通过以下命令进行安装: ``` pip install openpyxl ``` 2. 打开Excel文件Python,我们可以使用openpyxl库下的Workbook()方法创建工作簿对象,并使用load_workbook()方法打开Excel文件,如下所示: ```python from openpyxl import Workbook from openpyxl import load_workbook wb = load_workbook('example.xlsx') ``` 注意:上述代码需要导入openpyxl库。 3. 选定表格和定义行列号 使用工作簿对象wb下的get_sheet_by_name()方法选定要处理的表格,并使用max_row和max_column方法获取表格的最大行数和最大列数。另外,还可以定义一个行列变量用来指定起始和结束的行列号: ```python sheet = wb.get_sheet_by_name('Sheet1') start_row = 2 end_row = sheet.max_row start_col = 1 end_col = sheet.max_column ``` 注意:这里要按照你自己Excel文件的表格名字和起始结束行列号进行相应修改。 4. 循环遍历表格数据 使用for循环语句进行遍历表格数据,将需要的数据提取出来,这里需要根据需求定义提取数据: ```python for row in range(start_row, end_row+1): cell1 = sheet.cell(row, start_col).value cell2 = sheet.cell(row, end_col).value if cell1 == "特定数据1": pass if cell1 == "特定数据2": pass ``` 注意:这里的"特定数据1"和"特定数据2"需要根据实际情况进行替换。 5. 写入到新表格 定义一个新的工作簿变量new_wb,并使用create_sheet()方法创建一个新的表格。对于每一个需要提取特定数据,在新表格相应的单元格写入数据: ```python new_wb = Workbook() new_sheet = new_wb.create_sheet(title='New Sheet') for row in range(start_row, end_row+1): cell1 = sheet.cell(row, start_col).value cell2 = sheet.cell(row, end_col).value if cell1 == "特定数据1": new_sheet.cell(row, 1).value = cell1 if cell1 == "特定数据2": new_sheet.cell(row, 1).value = cell2 ``` 6. 保存并关闭 使用工作簿对象new_wb下的save()方法将新的表格保存到指定的文件,并使用close()方法关闭打开的文件: ```python new_wb.save('result.xlsx') new_wb.close() ``` 至此,利用PythonExcel特定数据提取写入新表的步骤就结束了。如果按照以上步骤操作,应该能够顺利地完成这个任务。但请注意,在实际操作,根据你自己的表格数据格式和需求情况进行相应的修改。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值