我已經有一個使用CSV編寫器從列表創建的CSV文件。我想將通過for循環創建的另一個列表追加到CSV文件中。如何將新列表附加到現有的CSV文件?
第一代碼來創建CSV文件如下:
with open("output.csv", "wb") as f:
writer = csv.writer(f)
for row in zip(master_lst):
writer.writerow(row)
我使用列表master_lst
創建的CSV文件,並輸出如下:
read
ACACCUGGGCUCUCCGGGUACC
ACGGCUACCUUCACUGCCACCC
AGGCAGUGUGGUUAGCUGGUUG
然後,我創建另一個列表(ind_lst
)到for
循環,並且列表的內容必須以列爲單位附加到上一步中創建的CSV文件。我用下面的代碼:
with open("output.csv", "ab") as f:
writer = csv.writer(f)
for row in zip(ind_lst):
writer.writerow(row)
我獲得的輸出如下所示:
read
ACACCUGGGCUCUCCGGGUACC
ACGGCUACCUUCACUGCCACCC
AGGCAGUGUGGUUAGCUGGUUG
sample1
3
3
1
sample2
4
4
1
但是我所需要的輸出縱列如下:
read sample1 sample2
ACACCUGGGCUCUCCGGGUACC 3 4
ACGGCUACCUUCACUGCCACCC 3 4
AGGCAGUGUGGUUAGCUGGUUG 1 1
我檢查解決方案,但我可以找到明智的追加行的解決方案,但我需要追加列:append new row to old csv file python
我用writer.writerows
代替writer.writerow
但我得到這個錯誤:
_csv.Error: sequence expected
輸出結果如下:
read
ACACCUGGGCUCUCCGGGUACC
ACGGCUACCUUCACUGCCACCC
AGGCAGUGUGGUUAGCUGGUUG
s a m p l e 1
正如你可以看到,它打印列表的第一個元素在每個單元和此後終止並出現錯誤。我是python的初學者,所以如果有人能幫助解決這個問題,那真是太棒了。
編輯:
的master_lst是使用下面的代碼創建:
infile= open(sys.argv[1], "r")
lines = infile.readlines()[1:]
master_lst = ["read"]
for line in lines:
line= line.strip().split(',')
fourth_field = line [3]
master_lst.append(fourth_field)
的ind_lst是使用下面的代碼創建:
for file in files:
ind_lst = []
if file.endswith('.fa'):
first = file.split(".")
first_field = first [0]
ind_lst.append(first_field)
fasta= open(file)
individual_dict= {}
for line in fasta:
line= line.strip()
if line == '':
continue
if line.startswith('>'):
header = line.lstrip('>')
individual_dict[header]= ''
else:
individual_dict[header] += line
for i in master_lst[1:]:
a = 0
if key in individual_dict.keys():
a = individual_dict[key]
else:
a = 0
ind_lst.append(a)
請[編輯]你的問題,並添加定義'master_iist'代碼,更重要的是,'for'循環,創建' ind_lst'。 – martineau
@martineau:你好,馬蒂諾,我已經更新了你所要求的信息 – rex
@martineau:我正在查看答案部分,並且錯過了你的評論。很抱歉,我沒有明確解釋我的問題:(在當前工作目錄中爲每個文件擴展名爲.fa的文件創建了ind_lst,並且ind_lst的內容必須以列爲單位附加到輸出CSV文件中。 fa文件被讀取,ind_lst被創建並且被添加到列。在這個例子中,我提供了2個.fa文件,用於創建ind_lst到for循環,這個文件必須以列方式添加。請讓我知道你是否有任何問題,如果我的問題仍然不清楚 – rex