You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python按关键词分割大文本文件并提取数据至DataFrame

当然可以实现!我来一步步教你怎么做

完全可以用data:作为分割标记来拆分你的大文本文件,然后把提取到的结构化数据存入Pandas DataFrame。下面是具体的实现步骤和代码示例:

步骤1:读取文本文件

首先读取你的大文本文件内容。如果文件特别大,建议用逐行读取的方式避免内存占用过高;如果文件大小在可接受范围内,也可以一次性读取:

# 一次性读取文件(适合中等大小文件)
with open('your_file.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 若是超大文件,可考虑逐行处理(示例)
# entries = []
# with open('your_file.txt', 'r', encoding='utf-8') as f:
#     for line in f:
#         # 对每行进行分割处理,逻辑和后续一致
#         line_entries = line.split('data:')[1:]
#         entries.extend(line_entries)

步骤2:分割出单个数据条目

data:作为分隔符拆分文本,注意拆分后第一个元素是空字符串(因为原文本开头是{data:),所以我们从索引1开始取后面的内容:

# 分割出所有以data:开头的条目
raw_entries = content.split('data:')[1:]

步骤3:清理并提取每个条目的键值对

每个原始条目可能包含{}、逗号、空格等无关字符,我们可以用正则表达式来精准匹配键:值的模式,这样即使部分条目格式略有差异(比如缺少逗号,像示例里的Gerald条目)也能正确提取:

import re
import pandas as pd

processed_dicts = []

for entry in raw_entries:
    # 匹配所有 键:值 的模式,\w+匹配字母数字下划线,涵盖你的字段名和值
    matches = re.findall(r'(\w+):(\w+)', entry)
    # 把匹配结果转成字典
    entry_dict = dict(matches)
    processed_dicts.append(entry_dict)

步骤4:转换为DataFrame

最后把字典列表传入Pandas的DataFrame构造函数即可,缺失的字段会自动填充为NaN

df = pd.DataFrame(processed_dicts)
print(df)

运行上面的代码后,你会得到这样的结果:

namefriendscookieschairsoutsidestools
Mary2104NaNNaN
Gerald21044NaN
Tom2104NaN1

额外注意事项

  • 如果你的值包含非字母数字的字符(比如空格、特殊符号),可以调整正则表达式,比如用(\w+):([^,}]+)来匹配到逗号或大括号前的所有内容。
  • 对于超大文件,建议用生成器来处理每个条目,避免一次性加载所有数据到内存:
    def process_entries(file_path):
        with open(file_path, 'r', encoding='utf-8') as f:
            for line in f:
                for entry in line.split('data:')[1:]:
                    matches = re.findall(r'(\w+):(\w+)', entry)
                    yield dict(matches)
    
    df = pd.DataFrame(process_entries('your_file.txt'))
    

内容的提问来源于stack exchange,提问作者Harlot_Quinn

火山引擎 最新活动