我有一个包含行的文件(非常大),每一行都有一些字段,用逗号分隔。
从这个文件中,我必须提取几个字段并将它们转储到一个新行中。但这里的复杂之处在于,最后一个字段(列)本身包含一个逗号,但该特定字段由双引号“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/