python 批量读取txt文件

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中操作:按逗号分成列。
数据-分列:
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值