Другие решения подходят, если у вас всегда один и тот же формат и вы хотите извлечь только это единственное значение.
Если вам нужно больше гибкости для получения других данных, вы должны использовать формат данных json
.
Решение Python:
import csv, demjson
with open('test') as csvfile:
reader = csv.reader(csvfile, delimiter=' ', quotechar='"')
for row in reader:
data = demjson.decode(row[1])
for d in data:
for pd in d['phenodata']:
for pt in pd['phenotypes']:
phname = pt['phNAME']
print('%s %s' % (row[0],phname))
Выход:
ENSG00000268674 Dynamic changes
ENSG00000268674 Strong inhibition of secretion
ENSG00000215268 Dynamic changes
ENSG00000130538 Intracellular retention of SH4(YES)-mCherry
Поскольку ваша строка json
недействительна, мы не можем использовать модуль json
.
У вас должен быть установлен модуль demjson
:
# python3:
pip3 install demjson
# python2:
pip install demjson