使用 Python 从文本文件的列中提取数据

Extracting data from columns in text file using Python

我正在尝试从文本文件的列中提取数据。其中一列有一个 header,我还需要用 header 的重复条目提取整列,即:

col1 col2 col3
1     1     1
2     2     2
3     3     3

进入:

col1 col2 col3  col3
1     1     1   col3
2     2     2   col3
3     3     3   col3

我正在努力隔离 header。

for line in my_file:
    line = line.split("\t")
    column = line[0:3] #col1-3

如何从 col3 中获取 header 然后重复?我必须先用 "\n" 分割线,然后再用 "\t" 分割线吗?

我尝试这样做但收到错误消息?

您可以使用 Python 的 CSV 模块,如下所示。这可以自动为您处理所有列的拆分。默认情况下,它假定列以逗号分隔,但可以通过指定要使用的分隔符将其切换为制表符:

import csv

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input, delimiter='\t')
    csv_output = csv.writer(f_output, delimiter='\t')
    header = next(csv_input)
    csv_output.writerow(header + [header[-1]])

    for cols in csv_input:
        print cols
        csv_output.writerow(cols + [header[-1]])

对于给定的输入,您将得到以下输出(列以制表符分隔):

col1    col2    col3    col3
1   1   1   col3
2   2   2   col3
3   3   3   col3

使用 Python 2.7.9

测试

为什么不用 pandas.

     import pandas as pd
     df = pd.read_csv("filename.tsv",sep="\t")

为了得到列 header 你也可以使用

      df.ix[:,2:]
with open('/home/prashant/Desktop/data.txt') as f:
for l in f:
    print l.strip( ).split("\n")

这可能会解决您的问题我得到的结果是

[col1 col2 col3]

[1 1 1]

[2 2 2]

[3 3 3]