0

如果某些值超过我选择的数量,我正在尝试读取文本文件并从中删除某些行。

这是一个包含地图的文本文件,我需要操作第三列中的值。然后将新地图写入不同的文件(或编辑同一个文件)。请注意,这些值的长度为 3-4 个字符。

这就是地图的样子(相关值以粗体显示)

1 979 999 514 383 117 95 1

1 979 1000 514 383 117 95 1

我设法编写了一个干净的短代码来读取文件。这是我到目前为止所拥有的:

List = []
for line in open('textFile.txt','r').readlines():
    List.append(line.strip())
    print(line)

现在我需要一种方法来识别每一行上的相关值并设置一个条件来保存操作(在这种情况下删除值)。

我试图将特定行中的某个范围作为数组与整数进行比较,但这不起作用。

我还尝试将它们全部放在一个字符串中并设置一个指数循环,该循环将删除驻留在 [6] 到 [10] 范围内的每个字符(呈指数增长),但这对我来说太复杂了。

谁能帮我解决这个问题?

4

3 回答 3

2

我会将数据读入列表列表:

with open('testFile.txt') as fin:
    data = [line.split() for line in fin]

现在您可以操作第三列中的数据:

for line in data:
    print line[2] #prints the values in the third column

并将其写回——这里我将它写到一个不同的文件中,但它可以写回输入文件:

with open('testFile_out.txt','w') as fout:
    for line in data:
        fout.write(' '.join(line)+'\n') 
于 2013-05-21T13:20:21.350 回答
2

就地更新文件的示例,不包括第 3 列大于 1000 的记录:

import fileinput

for line in fileinput.input('yourfile', inplace=True):
    cols = line.split()
    if int(cols[2]) > 1000:
        continue
    print line,
于 2013-05-21T13:28:16.930 回答
1

从外观上看,您可以简单地拆分字符串,操作值,然后将它们重新组合在一起。所以例如

List = []
for line in open('textFile.txt','r').readlines():
    tl = line.split(' ')
    tl[2] += 1
    List.append(' '.join(tl))

真的不需要对一组数据进行多次迭代,如果您需要更清晰的代码,只需将其分解为函数即可。

于 2013-05-21T13:22:40.660 回答