我有一個小問題,我希望你能幫助我:)我試圖提供簡化的例子來幫助你明白我的意思。我正在使用Python 2.6。替換兩個csv文件的值
所以,我目前正試圖重新分配表示兩個對象之間交互的文件中的一些值。交互文件(文件1)看起來是這樣的:
Thing1 Thing2 0.625
Thing2 Thing3 0.191
Thing1 Thing3 0.173
雖然我的其他文件(文件2),也tsv
,看起來像:
DiffName1 Thing1 ...
DiffName2 Thing2 ...
DiffName3 Thing3 ...
從本質上講,我想借此file1
,在file2中找到對應的值,並創建一個與file1具有相同佈局的新文件,但將'Thing1'替換爲'DiffName1'等等,同時保持file1
的結構。即具有相應交互值的兩列。
到目前爲止,從提出問題和閱讀的答案在這裏,我已經取得了類似的結果與此腳本:(我檢查了,但有可能在這裏的一些冗餘/錯誤的事情)
import csv
import sys
interaction_file = sys.argv[1]
Out_file = sys.argv[2]
f_output = open(Out_file, 'wb')
ids = {}
with open('file2') as f_file2:
csv_file2 = csv.reader(f_file2, skipinitialspace=True)
header = next(csv_file2)
for cols in csv_file2:
ids[cols[7]] = cols[0]
with open(interaction_file, 'rb') as f_file1:
csv_file1 = csv.reader(f_file1, delimiter='\t')
csv_output = csv.writer(f_output, delimiter='\t')
for cols in csv_file1:
csv_output.writerow([ids.get(cols[0], cols[0]), ids.get(cols[1], cols[1]), cols[2]])
但是無論出於何種原因,我懷疑由於file2
的佈局略有不同,與此腳本最初編寫的文件相比,我一直無法爲我工作。我花了很多時間相當多的試圖理解這個文件的每一行,但我仍然不能完全得到它運行,可能是因爲我不太完全理解最後一行:
csv_output.writerow([ids.get(cols[0], cols[0]), ids.get(cols[1], cols[1]), cols[2]])
是誰能給我一些建議嗎?
乾杯,
馬修
你有使用熊貓的自由嗎?如果是這樣,請嘗試使用熊貓加入或str.replace功能, – pmaniyan
它究竟如何不適合你? –
我只是在問,如果你有使用熊貓的自由。 – pmaniyan