我正在尝试读取文本文件并从中删除某些行,如果某些值超出我选择的数量。
这是一个包含地图的文本文件,我需要操纵第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>
有人可以帮我吗?
答案 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))
无需在一组数据上多次迭代,如果您需要更清晰的代码,只需将其分解为函数即可。