前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自动化之如何格式化txt数据?

Python自动化之如何格式化txt数据?

作者头像
极简小课
发布2022-06-27 14:09:37
1.4K0
发布2022-06-27 14:09:37
举报
文章被收录于专栏:极简小课极简小课

在平时都工作中,我们会使用很多由客户或者第三方提供的数据,但是数据格式并不符合我们的要求,这个时候我们就需要手动去调整到我们需要的格式,如果数据量比较大,会花费很多时间,如果我们使用Python,自动化处理数据,会节省很多时间,而且可以一劳永逸,后续的数据处理都可以用Python处理,本篇我们介绍一下Python自动化之处理txt文档.

在开始撸代码之前,我们首先要去研究下原始文件,以及我们想要的数据格式,然后在制定程序逻辑,开始撸代码。

本次我们处理EDID的数据,客户给的EDID数据是txt文件,格式如下:

原始数据:

然后我们想处理为如下的格式来使用,处理后的格式:

撸代码前,我们先思考一下如何做,一般格式化数据,可以简单的分为三个步骤:

读取原始文件

处理数据格式

写入新文件

我们就先来分解这三个步骤:

读取原始文件

我们要读取txt文件,首先就需要先打开文件,然后才能读取,我们直接使用open函数打开文件,然后使用readlines逐行读取文件内容。

这里需要注意的是,使用open打开文件,当文件不用的时候,一定要用close去关闭。

心里是不是嘀咕咋这么繁琐,是不是怕忘记close,没关系,Python怎么可能让这种影响撸代码心情的情况发生, 所以就有了with open方法,不需要使用close关闭文件,会自动关闭打开后用完的文件。

具体用法如下:

代码语言:javascript
复制
def read_data_file(file_name):
    with open(file_name, "r") as fr: # file_name就是你要打开的文件名
        contents = fr.readlines() # 一次性逐行读取文件内容,并按行存为列表
    return contents

处理数据格式

当我们读取到数据后,就可以去处理数据为我们需要的格式了,代码如下:

代码语言:javascript
复制
def format_data(contents):
    format_contents= []
    for content in contents: 
      format_content = ''.join(["0x", content]).replace("\n", '') # 使用join在数据前加上0x, 使用replace去除换行
      format_contents.append(format_content) # 把格式化后的数据逐一增加到列表里
    return format_contents

写入新文件

我们把处理后的数据,写入新的文件里保存使用,写入文件用write函数就可以,同样的,要写入文件,需要先打开文件,然后把数据写入,write函数有好几种写入模式,这里我们通过追加的方式去写入,代码如下:

代码语言:javascript
复制
def write_to_file(output_file, format_contents):
    with open(output_file, "a") as fw:
        for format_content in format_contents:
            fw.write(format_content + ", ")

运行主函数

要写入文件,我们先定义好输出文件名,我们可以通过时间来定义输出文件名,我们也需要得到用户输入的文件,这里需要用到os、sys、datetime模块。

代码语言:javascript
复制
import os
import sys
import datetime

if __name__ == "__main__":
    file_name = sys.argv[1] # 得到用户输入的文件
    output_time = datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") # 获取当时时间并格式化
    output_name = os.path.basename(file_name).split(".")[0] # 获取用户输入文件名字
    output_file = output_name + "_" + output_time + ".txt" # 输出文件名
    
    before_datas = read_data_file(file_name)
    format_datas = format_data(before_datas)
    write_to_file(output_file, format_datas)
    
    print("Finished, please check file-> " + output_file)

本篇文章处理的原始数据算是比较干净的数据,处理起来也比较容易,但是如果遇到更复杂的数据,要从里面提取出想要的数据并格式化,那就需要更多的步骤了,下一篇我们介绍更复杂的txt原始数据处理方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极简小课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读取原始文件
  • 处理数据格式
  • 写入新文件
  • 运行主函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档