我有一个包含5列的文件,例如:
输入文件:
1 1 1 1 1 1 1 1 0 1
1 0 0 1 1
我想要打印第1列的输出文件,第2,第3和第4列值应该加在一起,第5列再次打印。
输出文件:
1 3 1
1 2 1
1 1 1
答案 0 :(得分:2)
尝试这样:
f = open('input_file')
for x in f:
x = x.split()
print("{} {} {}".format(x[0],(sum(map(int,x[1:4]))),x[4]))
f.close()
输出:
1 3 1
1 2 1
1 1 1
写入文件:
f = open('input_file')
f1 = open('output_file')
for x in f:
x = x.split()
f1.write("{} {} {}".format(x[0],(sum(map(int,x[1:4]))),x[4])))
f.close()
f1.close()
答案 1 :(得分:0)
在我看来,您在以可行的格式获取数据时遇到了一些麻烦。我建议阅读python文档:https://docs.python.org/2/tutorial/inputoutput.html用于输入和输出文件,https://docs.python.org/3/library/csv.html用于非常有用的csv模块。我已经整理了一个易于理解的代码段,并将您的数据放入一个可行的数组中。您可以轻松编辑它,使数据更容易找到更合适的结构。
import csv
data = []
with open('data.txt') as csvfile:
content = csv.reader(csvfile , delimiter=' ')
for row in content:
data += row
for i in range(len(data)):
data[i] = int(data[i])
print data
>>> [1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1]
从这里,你应该能够轻松地操纵数据来做你想做的事情。我建议阅读有关写入文件的文档,然后回来,向我们展示您的代码,如果遇到麻烦,请查看您出错的地方。
答案 2 :(得分:0)
试试这个
输入:
1 1 1 1 1
1 1 1 0 1
1 0 0 1 1
程序:
fp1=open("file.txt","r")
for i in fp1.readlines():
line = i[:-1].split(' ')
line = map(int,line)
x = reduce(lambda x, y: x+y ,line[1:-1])
print line[0],x,line[4]
输出:
1 3 1
1 2 1
1 1 1