簡體   English   中英

python如果值匹配,則在新列中將值添加到文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM