Ting
发布于 2023-03-01 / 131 阅读
0

Python实现文本文件中特定位置数据自动提取

代码和释义如下

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')