ich ein Skript in python
schreibe rekursiv durch jede Datei zu gehen, ein JSON-Objekt aus der Datei erstellen, die wie folgt aussieht:Python: Konvertieren einer Textdatei Multi-Level-JSON
target_id length eff_length est_counts tpm
ENST00000619216.1 68 33.8839 2.83333 4.64528
ENST00000473358.1 712 428.88 0 0
ENST00000469289.1 535 306.32 0 0
ENST00000607096.1 138 69.943 0 0
ENST00000417324.1 1187 844.464 0 0
ENST00000461467.1 590 342.551 3.44007 0.557892
ENST00000335137.3 918 588.421 0 0
ENST00000466430.5 2748 2405.46 75.1098 1.73463
ENST00000495576.1 1319 976.464 11.1999 0.637186
Das ist mein Skript :
import glob
import os
import json
# define datasets
# Dataset name
datasets = ['pnoc']
# open file in append mode
f = open('mydict','a')
# define a new object
data={}
# traverse through folders of datasets
for d in datasets:
samples = glob.glob(d + "/data" + "/*.tsv")
for s in samples:
# get the SampleName without extension and path
fname = os.path.splitext(os.path.basename(s))[0]
# split the basename to get sample name and norm method
sname, keyword, norm = fname.partition('.')
# determing Normalization method based on filename
if norm == "abundance":
norm = "kallisto"
elif norm == "rsem_genes.results":
norm = "rsem_genes"
else:
norm = "rsem_isoforms"
# read each file
with open(s) as samp:
next(samp)
for line in samp:
sp = line.split('\t')
data.setdefault(sname,[]).append({"ID": sp[0],"Expression": sp[4]})
json.dump(data, f)
f.close()
ich ein JSON-Objekt auf den folgenden Zeilen möchten:
# 20000 Sample names, 3 Normalization methods and 60000 IDs in each file.
DatasetName1 {
SampleName1 {
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
},
SampleName2 {
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
},
...
SampleName20000{
Type {
Normalization1 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization2 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
},
Normalization3 {
{ ID1: value, Expression: value },
{ ID2: value, Expression: value },
...
{ ID60000: value, Expression: value }
}
}
}
}
Also meine Frage ist - Wie stelle ich beim Konvertieren einer Textdatei in JSON die Ebenen in meiner JSON-Ausgabe ein?
Danke!
Können Sie dies auf einen MCVE reduzieren? Ich glaube nicht, dass es einen Grund gibt, so viele Informationen in Ihre Frage aufzunehmen, woran Sie arbeiten und wie Sie Ihre Dateien benannt haben. Produzieren Sie ein sehr einfaches Beispiel für ein halbes Dutzend Zeilen, die zeigen, was Sie tun möchten. –
Gibt es einen besonderen Grund, 8 Leerzeichen zu verwenden? – chapelo
@ Two-BitAlchemist Ich habe meine Frage aktualisiert. –