python:从awk命令中删除尾随的0和小数点

2024-06-16 09:13:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从导出中删除尾随的零:

代码正在读取原始tempFile,我需要第2列和第6列,其中包含:

12|9781624311390|1|1|0|0.0000
13|9781406273687|1|1|0|99.0000
14|9781406273717|1|1|0|104.0000
15|9781406273700|1|1|0|63.0000

awk命令将格式更改为逗号分隔,并将第2列和第6列转储到tempFile2中—我需要从第6列中删除尾随的零,因此最终结果如下所示:

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63

我相信这应该可以达到目的,但却没有成功实施:

awk '{sub("\\.*0+$",""); print}'

下面是我需要调整的代码:$6是删除零的列

if not isError:
    print "Translating SQL output to tab delimited format"
    awkRunSuccess = os.system(
            "awk -F\"|\" '{print  $2 \"\\,\" $6}' %s > %s" %
            (tempFile, tempFile2)
    )
    if awkRunSuccess != 0: isError = True

Tags: 代码命令目的sqlif格式nottempfile
2条回答

试试这个awk命令

awk -F '[|.]'  '{print $2","$(NF-1)}' FileName

输出:

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63

您可以使用gsub("\\.*0+$","",$2)来执行此操作,如下所示:

pax> echo '9781624311390|0.0000
9781406273687|99.0000
9781406273717|104.0000
9781406273700|63.0000' | awk -F'|' '{gsub("\\.*0+$","",$2);print $1","$2}'

9781624311390,0
9781406273687,99
9781406273717,104
9781406273700,63

然而,考虑到您已经Python中了(而且在regex方面也不是无精打采的),您可能希望以本机方式使用它,而不是启动awk进程。你知道吗

相关问题 更多 >