Python读取指定的TXT文本文件并从中提取指定数据的方法

简介: Python读取指定的TXT文本文件并从中提取指定数据的方法

  本文介绍基于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格式文件,大家可以参考文章Python读取Excel文件并复制指定的数据行https://blog.csdn.net/zhebushibiaoshifu/article/details/131615610)。

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

  至此,大功告成。

欢迎关注:疯狂学习GIS

相关文章
|
12天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
12天前
|
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/)
|
1天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
102 82
|
7天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
2天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
24 12
|
1天前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
22天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
52 20
|
29天前
|
人工智能 自然语言处理 算法
随机的暴力美学蒙特卡洛方法 | python小知识
蒙特卡洛方法是一种基于随机采样的计算算法,广泛应用于物理学、金融、工程等领域。它通过重复随机采样来解决复杂问题,尤其适用于难以用解析方法求解的情况。该方法起源于二战期间的曼哈顿计划,由斯坦尼斯拉夫·乌拉姆等人提出。核心思想是通过大量随机样本来近似真实结果,如估算π值的经典示例。蒙特卡洛树搜索(MCTS)是其高级应用,常用于游戏AI和决策优化。Python中可通过简单代码实现蒙特卡洛方法,展示其在文本生成等领域的潜力。随着计算能力提升,蒙特卡洛方法的应用范围不断扩大,成为处理不确定性和复杂系统的重要工具。
69 21
|
27天前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
34 10
|
28天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。

热门文章

最新文章