[英]Read file into dictionary and manipulate data
如果某些值超出我选择的数量,我尝试读取文本文件并从中删除某些行。
这是一个保存地图的文本文件,我需要操纵第三列中的值。 然后将新地图写入另一个文件(或编辑同一文件)。 请注意,这些值的长度为3-4个字符。
地图是这样的(相关值以粗体显示)
1 979 999 514 383 117 117 95 1
1 979 1000 514 383 117 95 95
我设法编写了一个干净的短代码来读取文件。 这是我到目前为止所拥有的:
List = []
for line in open('textFile.txt','r').readlines():
List.append(line.strip())
print(line)
现在,我需要一种方法来识别每行上的相关值并设置一个条件来保存该操作(在这种情况下删除值)。
我试图将特定行中的某个范围作为一个数组与整数进行比较,但这没有用。
我还尝试将所有内容放在一个字符串中并设置一个指数循环,该循环将删除[6]到[10]范围内的每个字符(呈指数增长),但事实证明这对我来说太复杂了。
有人可以帮我吗?
我会将数据读入列表列表:
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')
一个示例,其中不包括第三列大于1000的记录就地更新文件的示例:
import fileinput
for line in fileinput.input('yourfile', inplace=True):
cols = line.split()
if int(cols[2]) > 1000:
continue
print line,
从外观上,您可以简单地拆分字符串 ,操纵值,然后将其重新组合在一起。 所以举个例子
List = []
for line in open('textFile.txt','r').readlines():
tl = line.split(' ')
tl[2] += 1
List.append(' '.join(tl))
实际上,无需对一组数据进行多次迭代,如果需要更清晰的代码,只需将其分解为函数即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.