python 批量读取txt文件

2023-11-11

1、python 批量读取txt文件,不读#注释的部分,并将数据保存为dataframe格式?
代码:

import re
import glob
import pandas as pd

path = 'data/*.txt'  # 指定txt文件所在文件夹路径

# 匹配不带#注释的数据行
p = re.compile(r'^\s*[^#].*')

df = pd.DataFrame()  # 创建空的DataFrame

for file in glob.glob(path):
    with open(file, "r") as f:
        lines = f.readlines()

    data = []
    for line in lines:
        line = line.strip()
        if p.match(line):
            data.append(line.split())

    # 将数据转换为DataFrame格式,并添加到原DataFrame中
    df_tmp = pd.DataFrame(data, columns=['col1', 'col2', 'col3'])
    df_tmp['filename'] = file  # 添加文件名列
    df = pd.concat([df, df_tmp], ignore_index=True)

print(df)

2、python 批量读取txt文件,读#注释的部分,并将数据保存为dataframe格式?
思路:
批量读取txt文件,包括其中的#注释,可以使用Python的glob模块获取指定路径下所有的txt文件,然后遍历每个文件,读取文件中的所有行,并将文件名、注释行和数据行分别存储到相应的列表中;最后,将数据行转换为DataFrame格式,并添加文件名和注释行为新的一列。
代码:

import glob
import pandas as pd

path = 'data/*.txt'  # 指定txt文件所在文件夹路径

data = []  # 保存所有的数据行
comments = []  # 保存所有的注释行
filenames = []  # 保存所有的文件名

for file in glob.glob(path):
    with open(file, "r") as f:
        lines = f.readlines()

    filename = file.split("/")[-1]  # 提取文件名
    lines_data = []  # 保存当前文件的数据行
    lines_comments = []  # 保存当前文件的注释行

    for line in lines:
        if line.startswith("#"):  # 如果是注释行,则保存到comments列表中
            lines_comments.append(line.strip())
        else:  # 否则就是数据行,保存到data列表中
            lines_data.append(line.strip())

    # 将当前文件的数据行转换为DataFrame格式,并添加文件名和注释行为新的一列
    df_tmp = pd.DataFrame([line.split() for line in lines_data], columns=['col1', 'col2', 'col3'])
    df_tmp['filename'] = filename
    df_tmp['comments'] = ",".join(lines_comments)  # 将注释行转换为字符串,用逗号分隔
    data.append(df_tmp)

# 将所有的DataFrame合并为一个,并生成递增的整数索引
df = pd.concat(data, ignore_index=True)

print(df)

如果还要想提取注释行中的内容,可以这样:

# 使用字符串处理函数和正则表达式提取注释信息
pattern = r'#[^#]+\[[a-zA-Z]+\](.*)'
df['comment_type'] = df['comments'].str.extract(pattern)
df['comment_date'] = df['comments'].str.extract(r'Date: (\d{4}-\d{2}-\d{2})')

或者可以直接在Excel中操作:按逗号分成列。
数据-分列:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 批量读取txt文件 的相关文章

随机推荐

  • 重构-提取重复的代码

    在编写程序过程中 特别是刚刚入行没有多久的程序员 经常会犯的一个错误就是大段大段的复制粘贴代码 把功能相近的代码直接复制过来而不加以修改 这个习惯也许来源于你的老师也许来源于你本身的原因 总之 对于这一类程序员最好的设计模式就是 Ctrl
  • 电信aep平台和iot平台区别_移远BC95使用CoAP协议接入华为IoT平台

    点击上方蓝色字体 关注我们 BC95的CoAP测试需要云平台配合 当前的支持CoAP协议的平台有华为OceanConnect平台 电信天翼云 除了 Logo 其他和华为的一样 移动 OneNet等 此教程以华为的OceanConnect 平
  • leetcode 第55题 跳跃游戏

    题目 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例1 输入 nums 2 3 1 1 4 输出 true 解释 可以先跳 1 步 从下标
  • 习题8-6 删除字符 (20分)

    本题要求实现一个删除字符串中的指定字符的简单函数 函数接口定义 void delchar char str char c 其中char str是传入的字符串 c是待删除的字符 函数delchar的功能是将字符串str中出现的所有c字符删除
  • Python01-- Python遇到的代码错误:TypeError: __init__() missing 1 required positional argument: ‘priviledges‘

    Python遇到的代码错误 TypeError init missing 1 required positional argument priviledges 这是在学习python中遇到的一个问题 是关于类的参数问题 说到底还是对类的知识
  • 查看tenorflow对python版本的要求

    查看tenorflow对python版本的要求 一 前言 由于不同版本的tensorflow对所支持的python版本有所限制 两者不匹配则无法使用 所以我们在安装tensorflow时 应该查看与python版本相匹配的tensorflo
  • 安装SQL Server详细教程

    安装SQL Server2019详细教程 1 官网下载SQL Server 2019 Developer Developer下载地址 下载完成后 打开安装程序 选择自定义安装 选择安装路径 不推荐安装在C盘 然后等待下载安装 此过程较为缓慢
  • 华为手机微信如何与电脑连接到服务器,有华为手机,还用微信QQ传文件到电脑?Huawei share秒传了解一下...

    原标题 有华为手机 还用微信QQ传文件到电脑 Huawei share秒传了解一下 华为手机用户 还用微信 QQ传文件到电脑 Huawei share秒传了解一下 我们在办公的时候 难免需要手机和电脑之间互传文件 很多朋友都会选择用微信或者
  • jstl详解

    原文地址 http www blogjava net maverick1003 articles 236575 html JSTL标签库的使用是为类弥补html表的不足 规范自定义标签的使用而诞生的 在告别modle1模式开发应用程序后 人
  • nuxt框架快速了解

    公司最近有一个文献检索系统的研发项目 也让我第一次接触到Nuxt js框架 Nuxt js 是一个基于 Vue js 的通用应用框架 它可以通过对客户端 服务端基础架构的抽象组织 Nuxt js 主要关注的是应用的 UI渲染 Nuxt js
  • Linux系统入门----虚拟机安装CentOS,jdk,tomcat,mysql的配置[笔记]

    随着学习的深入 要捣鼓一下Linux系统 还不错 虽然不如deepin系统那么好看 但是对于企业来讲常常用CentOS 这不我又开始搞事情了 大家习惯用Vmware或者VirtureBox但是Win10自带一个虚拟机软件 可以不用再下载Vm
  • matlab-lsqcurvefit函数

    lsqcurvefit函数 least squares curve fitting 用于最小二乘法求解非线性曲线拟合问题 即已知输入向量xdata和输出向量ydata 并且知道输入与输出的函数关系为ydata F x xdata 但不知道系
  • 新手做短视频自媒体,还在为做什么领域发愁?这里有没有你喜欢的

    很多新手小白都会遇到这样的情况 一看到镜头就紧张 脸红 说不出话来 或者没有什么才艺 又没有颜值 但也想通过做短视频自媒体赚钱 今天大周给你们推荐几个新手不用露脸也能做的短视频领域 可以选一个自己喜欢或合适自己的去尝试一下 一 音乐领域 1
  • 【FPGA内部RAM原理及应用场景分析】- 从内部RAM简介、分类、存储器方式以及不同场景下的应用四个方面来详细阐述FPGA内部RAM的原理和应用。

    FPGA内部RAM原理及应用场景分析 从内部RAM简介 分类 存储器方式以及不同场景下的应用四个方面来详细阐述FPGA内部RAM的原理和应用 FPGA内部RAM简介 FPGA内部RAM是一种集成在FPGA芯片内部的存储器 它可以用于高速数据
  • cuihua 2022.4.11-17BUU刷题记录

    25 MRCTF2020 摇滚DJ 1 题目概述 2 解题过程 听了一下 真难听 audacity打开 波形是平的 和前面那道题有点像 kali的qsstv工具 安装qsstv apt install qsstv 安装成功后 在终端下输入q
  • pytorch: 网络权重初始化

    构建完网络后 往往需要初始化权重 其实也可以不需手动初始化 在声明网络时 pytorch有默认的初始化方式 如 import torch x torch Tensor 2 2 print x 输出为 tensor 2 0363e 09 4
  • SQL之sqli-labs注入Less-2~4

    一 Less 2 与Less 1相同 我们同样使用 id 1 看是否可以注入 发现不可以 并且提示错误 我们可以知道 这里不需要引号 这就是与Less 1不同的地方 除此之外 以下步骤与Less 1相同 2 接下来我们使用 order by
  • PHP数据接收和使用

    接受来自js发送的数据 有几种接收方式 1 GET u GET user 2 POST P POS 3 REQUEST 两种传输方式的数据都可以接收 q REQUEST 创建虚拟服务器完成后操作 数据表格的方法 链接数据库 link new
  • springboot启动报错Error creating bean with name requestMappingHandlerMapping defined in class path resou

    springboot启动报错 Error creating bean with name requestMappingHandlerMapping defined in class path resource org springframe
  • python 批量读取txt文件

    1 python 批量读取txt文件 不读 注释的部分 并将数据保存为dataframe格式 代码 import re import glob import pandas as pd path data txt 指定txt文件所在文件夹路径