我知道这应该很简单,但是因为我是python中的新手,所以在将值和列添加到文件时遇到了一些问题。我有两个文件,我想找到匹配的行,如果行匹配我想要一个值为1的新列,如果不匹配则应该得到0.这应该写在file-1或outPut中。我在添加值时遇到问题。
到目前为止我的代码:
# -*- coding: utf8 -*-
f1 = open('text-1.txt', 'r')
f2 = open('text-2.txt', 'r')
fileOne= f1.readlines()
fileTwo = f2.readlines()
outPut = open('output.txt', 'w')
for x,y in zip(fileOne,fileTwo):
if x==y:
outPut.write("\t".join(x) + 1)
else:
outPut.write("\t".join(x) + 0)
f1.close()
f2.close()
outPut.close
有任何建议或有更简单的方法吗?
由于
答案 0 :(得分:1)
现在,您的代码会产生错误:TypeError: cannot concatenate 'str' and 'int' objects
。执行"\t".join(x) + 1
时会发生此错误,因为join
的结果是字符串,1
是整数。您应该用引号括起数字:outPut.write("\t".join(x) + "1")
现在你的代码运行了。使用这些文件作为输入:
文本1.txt的
foo
bar
baz
文本2.txt
qux
bar
qux
输出结果为:
f o o
0b a r
1b a z0
这可能不是你想要的;我猜你想要最初出现的每一行,然后是一个标签,然后是1或0.如果这是你想要的,那么outPut.write("\t".join(x) + "1")
就不是这样做的了。 "\t".join(x)
在原始文本中的每个字符之间插入制表符。如果您想要未修改的文本加上标签加上数字,请执行outPut.write(x + "\t1")
。
现在的输出是:
foo
0bar
1baz 0
这更接近 - 每个角色之间不再有标签,但数字出现在错误的行上。这是因为x
是原始行的内容,包括结束换行符。如果您希望在换行符之前显示该号码,则必须删除换行符,并在结尾处添加新换行符:outPut.write(x.rstrip() + "\t1\n")
f1 = open('text-1.txt', 'r')
f2 = open('text-2.txt', 'r')
fileOne= f1.readlines()
fileTwo = f2.readlines()
outPut = open('output.txt', 'w')
for x,y in zip(fileOne,fileTwo):
if x==y:
outPut.write(x.rstrip() + "\t1\n")
else:
outPut.write(x.rstrip() + "\t0\n")
f1.close()
f2.close()
outPut.close()
输出现在是:
foo 0
bar 1
baz 0
符合您声明的要求:text-1的原始内容,如果匹配则添加值为1的新列,如果不匹配则为0。