csvファイル内の値をフィルタリングし、関連する行を1つのファイルに書き込んでいます。ValueError:dictにはフィールド名に含まれていないフィールドが含まれています:なし
これは私が書かれたものです:
#variables
doc = '/lab01/Projects/Lords_Projects/mna_exons.csv'
save = '/lab01/Projects/Lords_Projects/mna_exac.csv'
other = '/lab01/Projects/Lords_Projects/mna_alt.csv'
error = '/lab01/Projects/Lords_Projects/mna_error.csv'
seek = 'ExAC_ALL'
comp = .05
#script
import csv
#open
read = open(doc, 'rb')
write = open(save, 'wb')
dif = open(other, 'wb')
mis = open(error, 'wb')
#text conversion
reader = csv.DictReader(read, delimiter=',')
copy = csv.DictWriter(write, delimiter='\t', fieldnames=reader.fieldnames)
alt = csv.DictWriter(dif, delimiter='\t', fieldnames=reader.fieldnames)
er = csv.DictWriter(mis, delimiter='\t', fieldnames=reader.fieldnames)
#headers
head = {}
for n in reader.fieldnames:
head[n] = n
copy.writerow(head)
alt.writerow(head)
er.writerow(head)
#sorting
for row in reader:
try:
if float(row[seek]) < comp and float(row[seek]) > -comp:
copy.writerow(row)
elif float(row[seek]) >= comp or float(row[seek]) <= -comp:
alt.writerow(row)
except:
try:
if row[seek] == 'N/A':
copy.writerow(row)
except:
prob = csv.writer(write, delimiter='\t')
er.writerow(row)
prob.writerow("Value Not Float\n")
#Close
read.close()
write.close()
dif.close()
mis.close()
#Error Check
if 'Value Not Float\n' in open(save, 'r').read():
print('Error')
open(save, 'r').close()
私はそれを実行すると、それは私にこのエラーメッセージを表示します。
Traceback (most recent call last): File "csv_cond_filter.py", line 45, in er.writerow(row) File "/usr/lib64/python2.7/csv.py", line 152, in writerow return self.writer.writerow(self._dict_to_list(rowdict)) File "/usr/lib64/python2.7/csv.py", line 148, in _dict_to_list + ", ".join([repr(x) for x in wrong_fields])) ValueError: dict contains fields not in fieldnames: None
特に間違っているかもしれないものを見るためにテストするために、私が作りましたエラーはコメントにコメントを付け、スクリプトを再度実行しました。それは私にエラーメッセージを与えなかったし、エラー値を出力しなかったので、セグメントを分類できなかった場合は書き込むように指定したので、構文エラーだと思われますが、Pythonには新しく、 csvモジュールまたはDictWriterについて十分に知っています。
と
? –