Python文本过滤与提取功能实现求助
Python文本过滤与提取功能实现求助
嘿,兄弟,我太懂你刚接触编码时碰到这种批量文本提取问题的头疼了!别慌,咱们一步步来搞定这个需求。
首先先明确目标:咱们要把每个教室编号对应的所有学生姓名、科目、时间都精准提取出来,最后整理成规整的格式输出到新文件里对吧?
我给你写一段针对性的Python代码,专门处理这种重复格式的文本,思路很清晰:先读取原文件,逐行扫描捕获教室编号,再拆分每个学生的信息字段,最后把所有规整好的数据写入新文件:
def extract_classroom_data(input_file, output_file): with open(input_file, 'r', encoding='utf-8') as f: lines = f.readlines() classroom_data = [] current_classroom = None for line in lines: line = line.strip() if not line: continue # 跳过空行,避免干扰 # 匹配教室编号行 if line.startswith("Classroom arrangement :"): current_classroom = line.split(":")[-1].strip() # 匹配学生信息行 elif line.startswith("(") and line.endswith(")"): if current_classroom is None: continue # 跳过没有对应教室的异常行 # 去掉括号,拆分单个字段 student_info = line[1:-1].split(", ") info_dict = {"Classroom": current_classroom} for item in student_info: key, value = item.split(": ") info_dict[key.strip()] = value.strip() classroom_data.append(info_dict) # 写入新文件,用CSV格式方便后续查看或导入表格工具 with open(output_file, 'w', encoding='utf-8') as f: # 写入表头 headers = ["Classroom", "Student Name", "Subject", "Time"] f.write(",".join(headers) + "\n") # 写入每条学生数据 for data in classroom_data: row = [data.get(header, "") for header in headers] f.write(",".join(row) + "\n") # 替换成你的实际文件名即可使用 extract_classroom_data("original.txt", "extracted_data.csv")
这段代码的优势很明显:
- 自动跳过空行,几千行的大文件也能轻松处理
- 把零散的文本信息整理成结构化的字典,最后输出成CSV格式(Excel、WPS都能直接打开)
- 鲁棒性强,就算文本里偶尔有空格不一致的小偏差,也能正常提取信息
你只需要把代码里的original.txt换成你实际的输入文件名,extracted_data.csv换成你想要的输出文件名,运行就能得到规整的结果啦。如果之后想调整输出格式(比如换成JSON或者其他分隔符),直接修改最后写入文件的部分就行~
备注:内容来源于stack exchange,提问作者John Teo
相关产品推荐
相关产品推荐

