Python-如何从文件中删除列
问题描述:
我想从文件中删除第一列。该文件包含3个以空格分隔的列,列中包含以下标题: X','位移'和'强制'(请参阅图像)。Python-如何从文件中删除列
我已经想出了下面的代码,但令我失望的它不工作!
f = open("datafile.txt", 'w')
for line in f:
line = line.split()
del x[0]
f.close()
任何帮助非常感谢! 惠山
答
首先,您正在尝试从文件中读取(通过遍历文件内容),这些文件是可以写入的。这会给你一个IOError
。
其次,没有名为x
的变量存在(您尚未在脚本中声明/设置一个变量)。这将生成一个NameError
。
第三次也是最后,一旦您完成(正确)读取和编辑文件中的列,您将需要将数据写回到文件中。
为了避免一次加载一个(可能很大的)文件到内存中,从一个文件(逐行读取)并同时写入一个新文件可能是一个好主意。
像这样的东西可能会奏效:
f = open("datafile.txt", "r")
g = open("datafile_fixed.txt", "w")
for line in f:
if line.strip():
g.write("\t".join(line.split()[1:]) + "\n")
f.close()
g.close()
+0
谢谢大家的支持。 – Esan 2012-04-15 01:16:56
答
print ''.join([' '.join(l.split()[1:]) for l in file('datafile.txt')])
,或者,如果你想保留空格,而你知道,第二列总是开始于,比如说,第10字:
print ''.join([l[11:] for l in file('datafile.txt')])
答
一些阅读python i/o可能会有所帮助,但类似于下面的东西应该让你对你的脚:
with open("datafile.txt", "r") as fin:
with open("outputfile.txt", "w") as fout:
for line in fin:
line = line.split(' ')
if len(line) == 3:
del line[0]
fout.write(line[0] + ' ' + line[1])
else:
fout.write('\n')
编辑:固定与空行
工作
'德尔X [0]'真的吗? – orlp 2012-04-15 00:45:40
您是否真的阅读过代码丢失的错误?我的意思是,你在阅读时使用'''w''',很多都没有意义... – 2012-04-15 00:47:22