[英]python Add values to file in new column if they match
我知道這應該很簡單,但是由於我是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
有什么建議嗎,或者有更簡單的方法嗎?
謝謝
現在,您的代碼將產生錯誤: 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的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.