我想从文件中删除第一列。该文件包含3个以空格分隔的列,这些列具有以下标题: X','Displacement'和'Force'(请参见图片)。
我想出了以下代码,但令我失望的是它不起作用!
f = open("datafile.txt", 'w')
for line in f:
line = line.split()
del x[0]
f.close()
非常感谢任何帮助! 埃桑
答案 0 :(得分:8)
首先,您试图从一个文件中读取(通过迭代文件内容),这个文件是开放的。这将为您提供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()
答案 1 :(得分:1)
print ''.join([' '.join(l.split()[1:]) for l in file('datafile.txt')])
或者,如果你想保留空格,你知道第二列总是以第10个字符开头:
print ''.join([l[11:] for l in file('datafile.txt')])
答案 2 :(得分:1)
关于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')
编辑:修复为使用空行