如何使用python从.txt文件中提取两列?

时间:2016-05-31 15:26:32

标签: python csv

我做了一些计算。我想从数据中提取两列,并使用python将它们保存在另一个文件中。

这是我到目前为止所做的:我将文件保存为.txt,然后编写了这个脚本:

# -*- coding: utf-8 -*-

import csv

f = open('file.txt')

csv_f=csv.reader(f)

for row in csv_f:

     print row[1:3] # to get the second and third columns

f.close()

问题是当我运行脚本时:我收到此错误:IndexError: list index out of range

我已经知道问题是什么,因为它会将每行中的所有结果显示为列表中的字符。我怎么不知道如何解决这个问题,让他们分开连续。

这是文件的两个第一行作为示例:

Ene:   1    -0.429787341139E+03   -0.42979E+03   -0.59461E+01  4296   0.664E+00    0.167E+01
Ene:  2    -0.395935688219E+03    0.33852E+02   -0.43868E+01  4356   0.711E+00    0.928E+00

但这是我使用打印行时的结果:

['Ene:   1    -0.429787341139E+03   -0.42979E+03   -0.59461E+01  4296   0.664E+00    0.167E+01']
['Ene:   2    -0.395935688219E+03    0.33852E+02   -0.43868E+01  4356   0.711E+00    0.928E+00']

我真的很感激这个问题的任何帮助。

3 个答案:

答案 0 :(得分:3)

您必须指定正确的分隔符(默认为','):

csv_f = csv.reader(f, delimiter='\t')  # if the file is tab delimited

答案 1 :(得分:0)

import csv

f = open('file.txt')

csv_f=csv.reader(f)

for row in csv_f:

     print row.split(" ").[1:3] # to get the second and third columns

f.close()

答案 2 :(得分:0)

这是一个不需要使用csv模块的解决方案

with open('test.txt', 'r') as data: #using the with keyword ensures files are closed properly
  for line in data.readlines():
    parts = line.split(',') #change this to whatever the deliminator is
    print parts[0], parts[1] # parts[0] is the first column and parts[1] is the second column