iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python实现类似awk的简单功能
  • 901
分享到

python实现类似awk的简单功能

类似简单功能 2023-01-31 07:01:37 901人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用Python脚本实现,程序的一致性更好。 #!/usr/bin/python #coding:utf-8 import

命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用Python脚本实现,程序的一致性更好。

#!/usr/bin/python
#coding:utf-8

import os
import sys
from getopt import getopt

#处理协程
def deallines(dealer,instream,paras):
    sep = paras.get("sep","\t")
    for line in instream:
        fields = line.strip("\r\n").split(sep)
        for result in dealer(line,fields) or ():
            if type(result) == str:
                yield result
            elif type(result) == int:
                yield str(result)+"\n"
            else:
                yield sep.join([str(f) for f in result])+"\n"

#定义处理函数
dealerid = 0
def definedealer(dealstr,paras):
    global dealerid
    dealerid += 1
    funcname = "dealer_"+str(dealerid)
    exec "def "+funcname+"(line,f): "+dealstr
    return vars()[funcname]

#打印结果
def printer(instream):
    for line in instream:
        print line,

#处理字符转义
def convertchar(s):
    if s == "\\t":
        return "\t"
    elif s == "\\r":
        return "\r"
    elif s == "\\n":
        return "\n"
    elif s == "\\\\":
        return "\\"
    elif s == "\\'":
        return "\'"
    elif s == '\\"':
        return '\"'
    elif s == "\\a":
        return "\a"
    elif s == "\\b":
        return "\b"
    elif s == "\\e":
        return "\e"
    elif s == "\\v":
        return "\v"
    elif s == "\\f":
        return "\f"
    elif len(s) == 4 and s.startswith("\\x"):
        return chr(eval('0x'+s[2:4]))
    else:
        return s

#转换参数
def convertparas(paras):
    result = {"sep":"\t"}
    for key,value in paras:
        if key == '-F':
            result["sep"] = convertchar(value)
    return result
<pre name="code" class="python"><pre name="code" class="python">

FNR = 0def record(instream): global FNR for r in instream: FNR += 1 yield r
#主函数def main(args): paras,deals = getopt(args[1:],'F:') paras = convertparas(paras) dealers = [definedealer(dealstr,paras) for dealstr in deals] stream = record(sys.stdin) for dealer in dealers: stream = deallines(dealer,stream,paras) printer(stream)if __name__
 =='__main__': main(sys.argv)

#输入数据,姓名 年龄 身高 体重

cat person.txt
zs      10      1.3     35.0

ls      12      1.4     36.0

#print直接输出

cat person.txt | dealline 'print line,'

zs      10      1.3     35.0

ls      12      1.4     36.0

#分两步,第一步提取姓名 身高 体重,第二步计算体重指数=体重/身高/身高

cat person.txt | dealline 'yield f[0],f[2],f[3]' 'yield f[0],float(f[2])/float(f[1])/float(f[1])'
zs      20.7100591716
ls      18.3673469388

注:-F分隔符缺省为\t,line为整行,f为按分隔符split后的数组,FNR为记录号

--结束END--

本文标题: python实现类似awk的简单功能

本文链接: https://www.lsjlt.com/news/191573.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python实现类似awk的简单功能
    命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用python脚本实现,程序的一致性更好。 #!/usr/bin/python #coding:utf-8 import ...
    99+
    2023-01-31
    类似 简单 功能
  • python实现简单的计算器功能
    本文实例为大家分享了python实现简单计算器的具体代码,供大家参考,具体内容如下 今天学习到python中界面设计部分,常用的几种图形化界面库有:Jython、wxPython和t...
    99+
    2024-04-02
  • HTML怎么实现类似include功能
    在HTML中,没有内置的include功能,但可以使用JavaScript来实现类似的功能。一种方法是使用jQuery库中的load...
    99+
    2023-08-19
    HTML
  • python实现简单倒计时功能
    使用python实现简单倒计时exe,供大家参考,具体内容如下 使用tkinter制作界面实现倒计时功能。 使用time.sleep(1)实现 秒级 倒计时 使用...
    99+
    2024-04-02
  • mysql中类似oracle的over() row_number()的功能实现
    从网上找了很多资料,参考了如下链接,完成了一个需求:下一行的开始时间,作为上一行开始时间的结束时间。 https://www.cnblogs.com/yhzh/p/6222580.html 以下是自己做的...
    99+
    2024-04-02
  • HTML中如何实现类似include功能
    在HTML中,可以使用JavaScript实现类似include的功能。具体步骤如下:1. 创建一个用于加载外部HTML文件的Jav...
    99+
    2023-08-18
    HTML
  • PostgreSQL如何实现类似CURRENT_DATE函数的功能
    小编给大家分享一下PostgreSQL如何实现类似CURRENT_DATE函数的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • three.js简单实现类似七圣召唤的掷骰子
    目录1基本工作1.1 创建场景1.2 创建物理世界2 骰子2.1 骰子模型2.2 骰子物理2.3 判断骰子的顶面方案一方案二具体实现2.4 锁定骰子结1基本工作 笔者利用业余时间自...
    99+
    2023-01-17
    three.js七圣召唤掷骰子 three.js实现掷骰子
  • 使用python实现简单去水印功能
    在做视频或者图片处理的时候,我们经常会遇到存在水印的情况,或者我们需要去除图片的某一个部分,这时候我们就需要想办法去除不需要的这一部分。下面这个工具能够控制鼠标将图片上的任意部分改变...
    99+
    2024-04-02
  • Python+Tkinter简单实现注册登录功能
    本文实例为大家分享了Python+Tkinter简单实现注册登录功能的具体代码,供大家参考,具体内容如下 项目结构: 源代码: # -*- coding: utf-8 -*...
    99+
    2024-04-02
  • python如何实现简单倒计时功能
    这篇文章给大家分享的是有关python如何实现简单倒计时功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明...
    99+
    2023-06-14
  • 怎么用python实现简单聊天功能
    本篇内容主要讲解“怎么用python实现简单聊天功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python实现简单聊天功能”吧!服务端:from socket im...
    99+
    2023-06-20
  • springSecurity实现简单的登录功能
    前言 1、不使用数据库,实现一个简单的登录功能,只有在登录后才能访问我们的接口2、springSecurity提供了一种基于内存的验证方法(使用自己定义的用户,不使用默认的) 一、实...
    99+
    2024-04-02
  • Android实现简单的照相功能
    一个简单的照相功能,拍照之后在另一个activit中显示出拍照的图片。首先是布局文件: <xml version="1.0" encoding="utf-8"> <...
    99+
    2024-04-02
  • vue实现简单的分页功能
    前端Vue实现分页功能,供大家参考,具体内容如下 我们都知道在spring boot项目中安装pagehelper可以实现分页功能,但是在vue中也能在前端实现分页。 1、首先,在d...
    99+
    2024-04-02
  • react实现简单的拖拽功能
    本文实例为大家分享了react实现简单的拖拽功能的具体代码,供大家参考,具体内容如下 src文件夹下新建文件夹demo  然后在创建两个文件js和css demo.js文...
    99+
    2024-04-02
  • MySQL中怎么实现rownum功能类似的语句
    本篇内容主要讲解“MySQL中怎么实现rownum功能类似的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中怎么实现rownum功能类似的语句”吧...
    99+
    2024-04-02
  • vue实现简单分页功能
    本文实例为大家分享了vue实现简单的分页功能的具体代码,供大家参考,具体内容如下 <template> <div id="pages">     <di...
    99+
    2024-04-02
  • java实现简单点赞功能
    本文实例为大家分享了java实现简单点赞功能的具体代码,供大家参考,具体内容如下 需求分析 分析: 1.必须先登录,否则提示2.第一次点赞(顶),点赞操作,点赞数+1,提示顶成功3...
    99+
    2024-04-02
  • Servlet简单实现登录功能
    本文实例为大家分享了Servlet简单实现登录功能的具体代码,供大家参考,具体内容如下 介绍: Servlet 是 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作