将文件读入字典并操作数据

时间:2013-05-21 13:14:03

标签: python

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

这是一个包含地图的文本文件,我需要操纵第3列中的值。然后将新映射写入不同的文件(或编辑同一文件)。请注意,这些值的长度为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]范围内的每个字符(指数增长),但结果对我来说太复杂了。 / p>

有人可以帮我吗?

3 个答案:

答案 0 :(得分: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') 

答案 1 :(得分:2)

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

import fileinput

for line in fileinput.input('yourfile', inplace=True):
    cols = line.split()
    if int(cols[2]) > 1000:
        continue
    print line,

答案 2 :(得分:1)

从它的外观来看,你可以简单地split the string,操纵值然后将它们全部重新组合在一起。例如,

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

无需在一组数据上多次迭代,如果您需要更清晰的代码,只需将其分解为函数即可。