为了账号安全,请及时绑定邮箱和手机立即绑定

使用Python 3优化删除线

使用Python 3优化删除线

呼啦一阵风 2021-04-03 22:16:13
我目前正在尝试从大型文本文件中删除大多数行,并将所选信息重写为另一个。我必须逐行阅读原始文件,因为这些行出现的顺序是相关的。到目前为止,我能想到的最好的方法是只拉相关的行,并使用类似以下内容的方法重写它们:with open('input.txt', 'r') as input_file:    with open('output.txt', 'w') as output_file:        # We only have to loop through the large file once        for line in input_file:            # Looping through my data many times is OK as it only contains ~100 elements            for stuff in data:                    # Search the line                    line_data = re.search(r"(match group a)|(match group b)", line)                    # Verify there is indeed a match to avoid raising an exception.                    # I found using try/except was negligibly slower here                    if line_data:                        if line_data.group(1):                            output_file.write('\n')                        elif line_data.group(2) == stuff:                            output_file.write('stuff')        output_file.close()    input_file.close()但是,使用〜1Gb文件和〜120,000条匹配的行,该程序仍需要花费约8个小时才能运行。我相信瓶颈可能涉及到正则表达式或输出位,因为完成此脚本所花费的时间与行匹配数成线性比例。我曾尝试先将输出数据存储在内存中,然后再将其写入新的文本文件,但快速测试表明它以与之前写入数据大致相同的速度存储数据。如果有帮助,我有一个Ryzen 5 1500和8Gb的2133 Mhz RAM。但是,我的RAM使用率似乎从未达到上限。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信