代码和释义如下
import glob
import pandas as pd
import xlwt
# 定义函数,批量提取所有特定类型文本文件中特定位置的字符,前提各个字符之间必须有分隔符,split()留空会使用所有可用的分隔符用来分割字符,如果想指定特定分隔符,可以通过如下格式指定:split('指定分隔符')。字符位置通过str(lines[0].split()[0])中,[]中的数字指定,从0开始,如下列函数提取第一行第一个,命名为label1
def get_label1_from_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
try:
label1 = str(lines[0].split()[0])
return label1
except:
return None
# 定义函数,批量提取所有特定类型文本文件中特定位置的字符,命名为label2
def get_label2_from_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
try:
label2 = str(lines[1].split()[1])
return label2
except:
return None
# 定义函数,批量提取所有特定类型文本文件中特定位置的字符,命名为label3
def get_label3_from_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
try:
label3 = str(lines[2].split()[2])
return label3
except:
return None
# 递归获取当前目录下所有特定类型文本文件,创建文件路径列表
txt_files = glob.glob('**/*.txt',recursive=True)
# 创建Excel文件,并设置表头label1,label2,label3,位于第一行,0,0为表格中的A1单元格
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
worksheet.write(0,0, label = 'label1')
worksheet.write(0,1, label = 'label2')
worksheet.write(0,2, label = 'label3')
row_index = 1
# 依次遍历前面筛选的特定类型文本文件列表,按照定义函数提取字符并写入Excel文件,写入完成后行数加一
for txt_file in txt_files:
label1 = get_label1_from_file(txt_file)
label2 = get_label2_from_file(txt_file)
label3 = get_label3_from_file(txt_file)
if label1 is not None:
worksheet.write(row_index, 0, label1)
worksheet.write(row_index, 1, label2)
worksheet.write(row_index, 2, label3)
row_index += 1
# 保存Excel文件
workbook.save('result.xls')