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

简介: 该文介绍了如何使用Python遍历含有多個`.txt`文本文件的文件夹,找出文件名包含`Point`的文件,并从中提取特定波长数据。目标是收集所有相关文件中指定波长对应的后5列数据,同时保留文件名。代码示例展示了如何使用`os`和`pandas`库实现这一功能,最终将所有数据整合到一个DataFrame对象中。

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

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

  随后,在每一个我们需要的文本文件(也就是文件名中含有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的具体情况如下图所示。可以看到,已经保存了我们提取出来的具体数据,以及数据具体来源文件的文件名称;并且从一个文本文件中提取出来的数据,都是保存在一行中,方便我们后期的进一步处理。

相关文章
|
11天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
28天前
|
人工智能 自然语言处理 算法
随机的暴力美学蒙特卡洛方法 | python小知识
蒙特卡洛方法是一种基于随机采样的计算算法,广泛应用于物理学、金融、工程等领域。它通过重复随机采样来解决复杂问题,尤其适用于难以用解析方法求解的情况。该方法起源于二战期间的曼哈顿计划,由斯坦尼斯拉夫·乌拉姆等人提出。核心思想是通过大量随机样本来近似真实结果,如估算π值的经典示例。蒙特卡洛树搜索(MCTS)是其高级应用,常用于游戏AI和决策优化。Python中可通过简单代码实现蒙特卡洛方法,展示其在文本生成等领域的潜力。随着计算能力提升,蒙特卡洛方法的应用范围不断扩大,成为处理不确定性和复杂系统的重要工具。
69 21
|
26天前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
32 10
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
6月前
|
SQL JSON C语言
Python中字符串的三种定义方法
Python中字符串的三种定义方法
147 2
|
8月前
|
Python
python之字符串定义、切片、连接、重复、遍历、字符串方法
python之字符串定义、切片、连接、重复、遍历、字符串方法
python之字符串定义、切片、连接、重复、遍历、字符串方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法

热门文章

最新文章

推荐镜像

更多