1

我想从文件中删除第一列。该文件包含由空格分隔的 3 列,这些列的标题如下:X'、'Displacement' 和 'Force'(请参见图片)。

数据文件

我想出了以下代码,但令我失望的是它不起作用!

f = open("datafile.txt", 'w')
 for line in f:
  line = line.split()
  del x[0]
f.close()

任何帮助深表感谢 !伊桑

4

3 回答 3

10

首先,您正在尝试从一个可写入的文件中读取(通过遍历文件内容)。这会给你一个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()
于 2012-04-15T00:55:26.637 回答
1
print ''.join([' '.join(l.split()[1:]) for l in file('datafile.txt')])

或者,如果您想保留空格并且您知道第二列总是从第 10 个字符开始:

print ''.join([l[11:] for l in file('datafile.txt')])
于 2012-04-15T00:53:33.237 回答
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')

编辑:固定使用空白行

于 2012-04-15T00:54:38.550 回答