python 变量列转换为 python 中的 awk

问题描述 投票:0回答:1

我有以下代码:

#!/usr/bin/python
import os, sys, subprocess

yy = 22
filename = "master%d.txt" %yy
print(filename)

outlistx = "listx"

def awkfst(inname, yy, outname):
        cmd = '''awk -F "|" "$2 ~ /R1/ {print '${%d}'$4"XA"} "''' + inname + " >> " + outname %yy
        os.system(cmd)
        return

awkfst(filename, 22, outlistx)


输入文件具有以下方面:

|IVS-R11032|R11032|JAN03|  3|17:00|24|HtIsKvMaNsNtNyOnSaWzYg -Ag    |NASA|BONN|22JAN18|1.0 | XA |NASA|  14 |5257|

我想要一个名为 listx 的文件,其中包含以下行:

22JAN03XA

原来的awk命令行:

awk -F "|" '$2 ~ /R1/ { print '${y2d}'$4"XA" }' master$y2d >> listx

工作正常。

但是当运行 python 脚本时,我收到链接到我的函数 awkfst 的以下错误: “类型错误:在字符串格式化过程中并非所有参数都被转换”

我对 python 很陌生,想将我的 bash 脚本移到 python 中,但不知道如何解析它们之间的一些信息。

python variables awk
1个回答
0
投票

以下是如何在 Python 中完成这一切,而不是使用 shell 来运行

awk

import csv

def awkfst(inname, yy, outname):
    with open(innane) as infile, open(outname, 'w') as outfile:
        incsv = csv.reader(infile, sep='|'):
            for row in incsv:
                if 'R1' in row[2]:
                    outfile.write(f'{yy}{row[3]}XA\n')
© www.soinside.com 2019 - 2024. All rights reserved.