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()
<think>嗯,用户想要一个Python的七速成教程。首先,我需要确定他们的背景和目标。可能是完全没有编程经验,或者有其他语言基础,想快速入门Python。七时间比较紧张,得合理分配内容,既要覆盖基础,又要有实际项目练习,否则容易遗忘。 第一应该从基础语法开始,变量、数据类型、输入输出这些。然后第二控制流,条件语句和循环,加上练习。第三函数和模块,这部分对组织代码很重要。第四数据结构,列表、字典、元组、集合,这些是Python的核心。第五文件操作和异常处理,实际应用必备。第六面向对象,虽然速成,但OOP是Python的重要部分。第七做个综合项目,巩固所学。 要注意每的内容不要太满,否则用户可能跟不上。每个部分配简单的例子和练习题,帮助理解。可能还需要推荐一些学习资源,比如官方文档、在线练习平台。另外,要提醒用户多动手写代码,实践是关键。可能用户之后会继续深入学习,所以最后可以建议下一步的学习方向,比如Web开发、数据分析等。</think>以下是一个适合零基础的Python学习计划,每聚焦核心知识点,配合练习巩固基础: --- ### **Day 1:基础语法** ```python # 变量与数据类型 name = "小明" # 字符串 age = 20 # 整数 height = 1.75 # 浮点数 is_student = True # 布尔值 # 输入输出 print(f"{name}今年{age}岁") # f-string格式化 user_input = input("请输入数字:") ``` **练习**:编写程序计算圆的面积($S = \pi r^2$) --- ### **Day 2:流程控制** ```python # 条件判断 score = 85 if score >= 90: print("优秀") elif score >= 60: print("合格") else: print("不及格") # 循环结构 for i in range(5): # 0-4循环 print(i**2) nums = [1,2,3] sum = 0 while sum < 10: sum += nums.pop() ``` **练习**:找出100以内的所有素数 --- ### **Day 3:函数与模块** ```python # 函数定义 def calculate_bmi(weight, height): """计算BMI指数""" bmi = weight / (height ** 2) return round(bmi, 2) # 使用内置模块 import math print(math.sqrt(16)) # 开平方 # 导入自定义模块 from my_module import say_hello ``` **练习**:编写生成斐波那契数列的函数 --- ### **Day 4:数据结构** ```python # 列表操作 fruits = ["apple", "banana"] fruits.append("orange") print(fruits[1:]) # 切片操作 # 字典使用 student = { "name": "张三", "courses": ["数学", "英语"] } # 集合去重 unique_nums = {1, 2, 2, 3} # {1,2,3} ``` **练习**:统计文本中单词出现频率 --- ### **Day 5:文件与异常** ```python # 文件读写 with open("data.txt", "w") as f: f.write("Hello World") # 异常处理 try: num = int(input("输入数字:")) except ValueError: print("请输入有效数字!") ``` **练习**:实现文件内容复制功能 --- ### **Day 6:面向对象编程** ```python class Dog: def __init__(self, name): self.name = name def bark(self): print(f"{self.name}:汪汪!") my_dog = Dog("阿黄") my_dog.bark() ``` **练习**:创建「银行账户」类,实现存取款功能 --- ### **Day 7:综合项目** **开发简易计算器**,要求: 1. 支持加减乘除 2. 记录计算历史 3. 异常输入处理 **代码框架**: ```python class Calculator: def __init__(self): self.history = [] def add(self, a, b): result = a + b self.history.append(f"{a} + {b} = {result}") return result # 补充其他方法... ``` --- ### **学习建议** 1. 每保证2小时实操 2. 使用在线编程环境(如[Replit](https://replit.com)) 3. 参考官方文档:[Python 3 Documentation](https://docs.python.org/3/) 4. 推荐练习平台:LeetCode简单题、Codewars **下一步学习方向**: - Web开发(Django/Flask) - 数据分析(Pandas/Numpy) - 自动化脚本(文件处理/爬虫) - 人工智能(TensorFlow/PyTorch) 记住:编程能力=基础语法×项目经验,持续实践才是关键!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值