2016-05-31 52 views
0

我已经做了一些计算。我想从数据中提取两列,并用python将它们保存在另一个文件中。如何从python的.txt文件中提取两列?

这是我迄今所做的:我将文件保存为.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'] 

我非常感谢所有提供帮助这个问题。

+0

溶液'开放('path')。split('')[1:3]' –

+0

文件中的条目之间的字符就是这些标签吗?那是'\ t'还是一些像“''这样的真实空间?您可以给您的csv读者一个关于“方言”的概念,即哪个字符将记录(行)中的字段分开。比通过csv模块读取它们容易。其他方面,最好将其读作文本文件并通过空间分割。 @self的建议无效,因为文件没有属性拆分。一个字符串在逐行阅读时会有这种方法(属性虽然),请指出制表符是否在输入分隔。谢谢 – Dilettant

+0

他们是真实的空间,他们在原来的输出形式我的计算,我刚刚复制它们 – oranus

回答

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() 
+1

这但是并没有使用csv模块的全部功能 –

3

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

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

谢谢,我试过这些命令,但它仍然把所有元素放在一行中作为列表中的一个元素! – oranus

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 
相关问题