【问题标题】:Extracting data from columns in text file using Python使用 Python 从文本文件中的列中提取数据
【发布时间】:2015-12-07 10:41:51
【问题描述】:

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

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

我正在努力隔离标题。

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

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

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

【问题讨论】:

  • 你的文件是制表符分隔的 csv 文件吗?
  • 它是一个由制表符分隔的文本文件
  • 你能把那个错误发布为编辑吗?

标签: python parsing text multiple-columns


【解决方案1】:

你为什么不使用熊猫。

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

为了获得列标题,您也可以使用

      df.ix[:,2:]

【讨论】:

    【解决方案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]

    【讨论】:

      【解决方案3】:

      您可以使用 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 测试

      【讨论】:

        猜你喜欢
        • 2020-12-17
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 1970-01-01
        相关资源
        最近更新 更多