python - 使用 awk 实用程序实现的场景

标签 python linux awk

我有一个包含行的文件(非常大),每一行都有一些字段,用逗号分隔。

从这个文件中,我必须提取几个字段并将它们转储到一个新行中。但这里的复杂之处在于,最后一个字段(列)本身包含一个逗号,但该特定字段由双引号“some,thing”标识(比方说)。

让我举个例子:-

the, quick, brown, fox, jumps, right, over, the little, "lazy,dog"

这个文件中有很多这样的行,用逗号分隔。

最后一列中可能有很多逗号,

现在我需要从中提取几列,我肯定要提取最后一列。

我想过使用 awk,但 awk 似乎对分隔符的分割没有限制。

python 有一个 split() 函数,我们可以在其中限制编号。拆分和字符串进入最后一个索引。 ['the', 'quick', 'brown', 'fox', 'jumps', 'right', 'over', 'the little', 'lazy,dog'].

此外,应从最终输出中删除双引号。

我尝试使用 awk,因为 awk 在我看来处理大文件的速度更快。但是是否有可能实现这种事情,或者我需要使用 pythonic 循环和拆分方式,它似乎有点慢。

注意: 1)没有。列数是固定的。

请提出建议。

最佳答案

这不会让您远离 Python,但这似乎是一个 csv情况下,尤其是当您提到要删除最后一项周围的引号时。

测试.csv:

ay,bee,cee,dee,"ee,eff"
foo,bar,"baz,quux"

测试.py:

#!/usr/bin/env python

import csv

fp = open('test.csv', 'r')
for row in csv.reader(fp):
    print row
fp.close()

输出:

['ay', 'bee', 'cee', 'dee', 'ee,eff']
['foo', 'bar', 'baz,quux']

关于python - 使用 awk 实用程序实现的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213313/

相关文章:

python - 可在 C 中调用的高精度(~200 sig figs)不完整 Gamma 函数

python - AttributeError: 'Series' 对象没有属性 'items'

c - 在 Linux 上设置 libcurl

unix - 如何根据多个列值拆分文件

awk - 更改文本文件的外观

python - 如何在 django TestCase 中使用 pytest 固定装置

python - 使用 python 在 Windows 上复制锁定的 dbf 文件

linux - awk 三重文件输入

linux - Linux 中的 XTVFS 文件系统

linux - 在本地安装 zlib