如何使用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)
运行上面的代码后,你会得到这样的结果:
| name | friends | cookies | chairs | outside | stools |
|---|---|---|---|---|---|
| Mary | 2 | 10 | 4 | NaN | NaN |
| Gerald | 2 | 10 | 4 | 4 | NaN |
| Tom | 2 | 10 | 4 | NaN | 1 |
额外注意事项
- 如果你的值包含非字母数字的字符(比如空格、特殊符号),可以调整正则表达式,比如用
(\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




