Python提取文本文件(.txt)数据的方法

python,txt · 浏览次数 : 0

小编点评

**代码解析:** ```python import os import pandas as pdoriginal_file_folder result_file_path = "E:/03_Experiment/202306HuaiLai/HuaiLai_20230627_SpectralCurve/Result.csv" target_wavelength = [490, 561, 665, 702, 863] result_all_df = pd.DataFrame() for file in os.listdir(original_file_folder): if file.endswith(".txt") and file[3] == "P": file_path = os.path.join(original_file_folder, file) df = pd.read_csv(file_path, delimiter="\\t") select_df = df[df["Wavelength"].isin(target_wavelength)] select_df.insert(0, "file_name", file) data_append = select_df.iloc[1: , 2:] result_df = pd.DataFrame() result_df = pd.concat([select_df.iloc[0].reset_index(drop=True), pd.DataFrame(data_append.values.flatten()).transpose()], axis=1) result_df.columns = range(result_df.shape[1]) result_all_df = pd.concat([result_all_df, result_df], axis=0, ignore_index=True) print(result_all_df) ``` **代码功能:** 1. 使用 `os.listdir()` 遍历文件夹中的所有文件。 2. 通过条件过滤,只选择以 .txt结尾且文件名中的第四个字母是 P 的文件。 3. 遍历每个文件,读取其内容,并将文件名写入到结果 DataFrame 的第一列。 4. 根据给定的目标波长列表 `target_wavelength`,筛选包含目标波长的数据行,并将文件名添加到结果 DataFrame 的第二列。 5. 将所有数据合并到一个结果 DataFrame 中,并按行合并。 6. 输出结果 DataFrame,其中包含所有文件的信息,以及从哪个文件中提取的具体数据。

正文

  本文介绍基于Python语言,遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,并从上述每一个文本文件中,找到我们需要的指定数据,最后得到所有文本文件中我们需要的数据的合集的方法。

  首先,我们来明确一下本文的具体需求。现有一个文件夹,其中含有大量的.txt格式文本文件,如下图所示;同时,这些文本文件中,文件名中含有Point字段的,都是我们需要的文件,我们接下来的操作都是对这些我们需要的文件而言的;而不含有Point这个字段的,那么我们就不需要。

image

  随后,在每一个我们需要的文本文件(也就是文件名中含有Point字段的文件)中,都具有着如下图所示的数据格式。我们希望,基于第1列(红色框内所示的列)数据(这一列数据表示波长),找到几个指定波长数据所对应的行,并将这些行所对应的后5列数据都保存下来。

  此外,前面也提到,文件名中含有Point字段的文本文件是有多个的;因此希望将所有文本文件中,符合要求的数据行都保存在一个变量,且保存的时候也将文件名称保存下来,从而知道保存的每一行数据,具体是来自于哪一个文件。

  知道了需求,我们就可以开始代码的书写。其中,本文用到的具体代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Fri Jul  7 23:39:43 2023

@author: fkxxgis
"""

import os
import pandas as pd

original_file_folder = "E:/03_Experiment/202306HuaiLai/HuaiLai_20230627_SpectralCurve"
result_file_path = "E:/03_Experiment/202306HuaiLai/HuaiLai_20230627_SpectralCurve/Result.csv"
target_wavelength = [490, 561, 665, 702, 863]

result_all_df = pd.DataFrame()

for file in os.listdir(original_file_folder):
    if file.endswith(".txt") and file[3] == "P":
        file_path = os.path.join(original_file_folder, file)
        df = pd.read_csv(file_path, delimiter = "\t")
        select_df = df[df["Wavelength"].isin(target_wavelength)]
        select_df.insert(0, "file_name", file)
        
        data_append = select_df.iloc[1 : , 2 : ]
        result_df = pd.DataFrame()
        result_df = pd.concat([select_df.iloc[[0]].reset_index(drop = True), pd.DataFrame(data_append.values.flatten()).transpose()], axis = 1)
        result_df.columns = range(result_df.shape[1])
        result_all_df = pd.concat([result_all_df, result_df], axis = 0, ignore_index = True)

  上述代码具体的含义如下所示。

  首先,我们导入了需要使用的库——os库用于文件操作,而pandas库则用于数据处理;接下来,我们定义了原始文件夹路径 original_file_folder 和结果文件路径 result_file_path。然后,我们创建一个空的DataFrame对象result_all_df,用于存储所有处理后的结果。

  再接下来,通过使用os.listdir()函数,我们遍历指定文件夹中的文件。我们通过条件过滤,只选择以.txt结尾且文件名的第四个字母是P的文件——这些文件就是我们需要的文件。随后,对于每个满足条件的文件,我们构建了文件的完整路径file_path,并使用pd.read_csv()函数读取文件的内容。在这里,我们使用制表符作为分隔符,并将数据存储在DataFrame对象df中。

  然后,我们根据给定的目标波长列表target_wavelength,使用条件筛选出包含目标波长的数据行,并将文件名插入到选定的DataFrame中,即在第一列插入名为file_name的列——这一列用于保存我们的文件名。

  接下来,在我们已经提取出来的数据中,从第二行开始,提取每一行从第三列到最后一列的数据,将其展平为一维数组,从而方便接下来将其放在原本第一行的后面(右侧)。然后,我们使用pd.DataFrame()函数将展平的数组转换为DataFrame对象;紧接着,我们使用pd.concat()函数将原本的第一行数据,和展平后的数据按列合并(也就是放在了第一行的右侧),并将结果存储在result_df中。

  最后,我们将每个文件的处理结果按行合并到result_all_df中,通过使用pd.concat()函数,指定axis=0表示按行合并。由于我这里的需求是,只要保证文本文件中的数据被提取到一个变量中就够了,所以没有将结果保存为一个独立的文件。如果需要保存为独立的.csv格式文件,大家可以参考文章多次复制Excel符合要求的数据行:Python批量实现

  运行上述代码,即可看到保存我们提取出来的数据的结果的变量result_all_df的具体情况如下图所示。可以看到,已经保存了我们提取出来的具体数据,以及数据具体来源文件的文件名称;并且从一个文本文件中提取出来的数据,都是保存在一行中,方便我们后期的进一步处理。

  至此,大功告成。

与Python提取文本文件(.txt)数据的方法相似的内容:

Python提取文本文件(.txt)数据的方法

本文介绍基于Python语言,遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,并从上述每一个文本文件中,找到我们需要的指定数据,最后得到所有文本文件中我们需要的数据的合集的方法~

Python 提取PDF文本和图片

从PDF中提取内容能帮助我们获取文件中的信息,以便进行进一步的分析和处理。此外,在遇到类似项目时,提取出来的文本或图片也能再次利用。要在Python中通过代码提取PDF文件中的文本和图片,可以使用 Spire.PDF for Python 这个第三方库。具体操作方法查阅下文。 Python 提取PD

python提取特定格式的数据

Excel Grid Data Converter 知识点总结 本文档总结了 ExcelGridConverter.py 脚本所涉及的关键 Python 知识点。该脚本用于从多个 Excel 文件中提取特定格式的数据并转换为一个新的 Excel 文件。 目录 导入库 Pandas 数据处理 Tkin

4.2 x64dbg 针对PE文件的扫描

通过运用`LyScript`插件并配合`pefile`模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下`pefile`模块。pefile模块是一个用于解析Windows可执行文件(PE文件)的Python模块,它可以从PE文件中提取出文件头、节表、导入表、导出表、资源表等信息,也可以

核对不同文件夹所含内容的差异并提取缺失内容:Python代码

本文介绍基于Python语言,以一个大文件夹作为标准,对另一个大文件夹所包含的子文件夹或文件加以查漏补缺,并将查漏补缺的结果输出的方法~

21.1 使用PEfile分析PE文件

PeFile模块是`Python`中一个强大的便携式第三方`PE`格式分析工具,用于解析和处理`Windows`可执行文件。该模块提供了一系列的API接口,使得用户可以通过`Python`脚本来读取和分析PE文件的结构,包括文件头、节表、导入表、导出表、资源表、重定位表等等。此外,PEfile模块还可以帮助用户进行一些恶意代码分析,比如提取样本中的字符串、获取函数列表、重构导入表、反混淆等等。PE

分享一个提高运维效率的 Python 脚本

哈喽大家好我是咸鱼,今天给大家分享一个能够提升运维效率的 python 脚本 咸鱼平常在工作当中通常会接触到下面类似的场景: 容灾切换的时候批量对机器上的配置文件内容进行修改替换 对机器批量替换某个文件中的字段 对于 Linux 机器,咸鱼可以写个 shell 脚本或者直接批量使用 sed 命令就能

讯飞有一个可以根据描述文本自动生成PPT的AI接口,有趣

文档:https://www.xfyun.cn/doc/spark/PPTGeneration.html 价格方面提供了免费1000点的额度,生成一次是10点,正好100次,如果要购买的话最低要购买1344元的,没有按量付费的模式,个人小开发者可买不起。 让我们跑起来玩玩,官方提供了python的s

[转帖]Python-Curses模块

Python-Curses 什么是Curses?Python Curses模块开始我们的编程吧(启动与结束)重要使用方法(包装用法)Windows and Pads显示文本属性和颜色用户输入 什么是Curses? curses库为基于文本的终端提供独立于终端的屏幕绘制和键盘处理设施;这些终端包括VT

Python 3.12 抢先看——关于 f-string 的改动

# Python 3.12 抢先看——关于 f-string 的改动 哈喽大家好,我是咸鱼 相信小伙伴们对 python 中的 f-string 都不陌生 f-string 是格式化字符串的缩写,是以小写或大写字母 F 为前缀的字符串文本 f-string 提供简洁明了的语法,**允许对变量和表达式