Python 处理 TXT 文件,合并重复数字后的数据
'/n如何将一个包含以下数据的 TXT 文件,进行处理,将相同数字后的数据合并成一行?/n/n/n['~#107802:10:aa#~']/n['~#105102:12:aa#~']/n['~#107747:101:aa#~']/n['~#110946:173:aa#~']/n['~#108231:14:aa#~']/n['~#108227:107:aa#~']/n['~#108214:13:aa#~']/n['~#107802:206:aa#~']/n['~#108248:154:aa#~']/n['~#105102:192:aa#~']/n['~#107859:154:aa#~']/n/n/n最终处理成类似于以下格式:/n/n/n['107802','10:aa#~'],206:aa#~']']/n['105102','12:aa#~'],192:aa#~']']/n['107747','101:aa#~']']/n['110946','173:aa#~']']/n['108231','14:aa#~']']/n['108227','107:aa#~']']/n['108214','13:aa#~']']/n['108248','154:aa#~']']/n['107859','154:aa#~']']/n/n/n解决方案/n/n可以使用正则表达式来实现:/n/npython/nimport re/n/nwith open('data.txt', 'r') as f:/n lines = f.readlines()/n/nnew_lines = []/nfor line in lines:/n match = re.match(r/'~#(/d+):(/d+:/w+#~)/n/', line)/n if match:/n found = False/n for new_line in new_lines:/n if new_line[0] == match.group(1):/n new_line.append(match.group(2))/n found = True/n break/n if not found:/n new_lines.append([match.group(1), match.group(2)])/n/nfor new_line in new_lines:/n print(new_line)/n/n/n代码解析/n/n1. 导入 re 模块,用于正则表达式匹配。/n2. 使用 with open() 打开 data.txt 文件并读取所有行到 lines 列表中。/n3. 创建一个空列表 new_lines,用于存储处理后的数据。/n4. 遍历 lines 列表中的每一行,使用 re.match() 方法匹配正则表达式 r/'~#(/d+):(/d+:/w+#~)/n/'。/n5. 如果匹配成功,则提取匹配到的数字和数据,并将它们添加到 new_lines 列表中。如果数字已经存在,则将数据添加到相应的列表中。/n6. 最后,遍历 new_lines 列表,打印处理后的结果。/n/n示例/n/n假设 data.txt 文件的内容如下:/n/n/n['~#107802:10:aa#~']/n['~#105102:12:aa#~']/n['~#107747:101:aa#~']/n['~#110946:173:aa#~']/n['~#108231:14:aa#~']/n['~#108227:107:aa#~']/n['~#108214:13:aa#~']/n['~#107802:206:aa#~']/n['~#108248:154:aa#~']/n['~#105102:192:aa#~']/n['~#107859:154:aa#~']/n/n/n运行代码后,输出结果为:/n/n/n['107802', '10:aa#~', '206:aa#~']/n['105102', '12:aa#~', '192:aa#~']/n['107747', '101:aa#~']/n['110946', '173:aa#~']/n['108231', '14:aa#~']/n['108227', '107:aa#~']/n['108214', '13:aa#~']/n['108248', '154:aa#~']/n['107859', '154:aa#~']/n/n/n总结/n/n本示例演示了如何使用 Python 和正则表达式处理 TXT 文件,将相同数字后的数据合并成一行。这种方法可以应用于各种数据处理场景,例如日志分析、文本挖掘等。
原文地址: https://www.cveoy.top/t/topic/m8y7 著作权归作者所有。请勿转载和采集!