Python读写文件,文本处理,并把日期自动更新为90天前

本文介绍了一种文本处理方法,该方法将原始文本转换为特定格式以便导入数据库。通过使用Python脚本,程序能够筛选出特定类型的行并调整日期字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mark下。今天任务中有一部分是对生成的文本进行处理,生成需要的格式,以方便下一步导入数据库。

需求

原始文本格式如下:

这里写图片描述

生成的文档格式应为:取app或者input开头的行。把日期相同的app和input放在一行,并把日期提前90天。
生成格式如下图所示:

这里写图片描述

代码

直接上文本处理的小程序了,程序里有注释

import sys
import datetime
import time

file = open("sql_20170503.txt") # 输入文件
outputfile = open("temp.txt",'a') # 输出文件
line = file.readline()
app_map = {} # 首字段为"app"的
input_map = {} # 首字段为"input"的

# 按行读写
while line:
    lineSplit = line.split("\t")  # 拆分字段
    print line,
    line = file.readline()
    print "-----------",lineSplit[0]+"\t"+lineSplit[1]+"\t"+lineSplit[2]+"\t"+lineSplit[3],

    # 日期修改为前90天
    dt = lineSplit[1]
    myday = datetime.datetime(int(dt[0:4]), int(dt[4:6]), int(dt[6:8])) + datetime.timedelta(days=-90)
    dt = myday.strftime('%Y%m%d')
    lineSplit[1] = str(dt)

    # 以日期为键,其余为值
    if lineSplit[0] == "app":
        app_map[lineSplit[1]] = lineSplit[0] + "\t" + lineSplit[2] + "\t" + lineSplit[3]
        print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"+app_map[lineSplit[1]];
    elif lineSplit[0] == "input":
        input_map[lineSplit[1]] = lineSplit[0] + "\t" + lineSplit[2] + "\t" + lineSplit[3]

file.close()

merge_map = {} # 字段联结
for input_key, input_value in input_map.items():
    if input_key in app_map.keys():
        merge_map[input_key] = input_value[0:-1] + "\t" +  app_map[input_key]
    else:
        print input_key + "************************************************************************************************"
#       merge_map[input_key] = input_value[0:-1] + "\t" + "app" + "\t" + "0" + "\t" + "0" + "\n"

# 按格式输出
for merge_key, merge_value in merge_map.items():
    merge = merge_key + "\t" + merge_value
    outputfile.write(merge)
    print merge_key + "\t" + merge_value,

outputfile.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值