У меня есть много файлов xml
для анализа данных, которые я использую с помощью python.
Например, пожалуйста, рассмотрите Object
как результат проанализированных xml
данных.
Более того,Object
есть Object_A
, который я хочу проанализировать.
Моя проблема в том, что существуют случаи, когда Object
существует, но Object_A
не существует.В этом случае Object_A
возвращает NameError
, и я не смог продолжить процесс.
Если у Object
нет данных Object_A
, я хочу заменить значение NA
(строки), как показано ниже.
Мой вопрос заключается в том, можно ли заменить None
наObject_A
как и мои коды.
Подскажите пожалуйста, как решить это дело.
for Object in Objects:
for Object_A in Objects_A:
try:
Object_A
except NameError:
Object_A is None
if Object_A is not None:
# some treatment to parse the data(I omitted the code)
else:
# instead of parsing the data, subsituting strings "NA"(I omitted the code)
[Отредактировано]
Ниже приведены целые коды.Выше код является модифицированной версией моих кодов для легкого понимания.Таким образом, выше и ниже код не совпадает.
Здесь я использую модули BioPython.И, Objects_A - это разновидности разновидностей_отчетных записей, а Object_A - это описание.Извините за путаницу.
## process of rearrange of blast search result ##
import os
import glob
import pandas as pd
from Bio import SeqIO
from Bio.Blast import NCBIWWW
from Bio import SearchIO
from Bio.Blast import NCBIXML
## path seting
path = 'C:/Users/......................'
os.chdir(path)
# reading the DNA alignment
# getting the untreated folders("_bf" means treated files)
folder_names = [folder_name for folder_name in glob.glob(path + '/' + '*') if "_bf_ald" not in folder_name]
DNA_SampleID = []
Title = []
Score = []
E_value = []
Order_Index = []
# getting the untreated files
for folder_name in folder_names:
xml_names = [xml_name for xml_name in glob.glob(folder_name + '/*.xml')]
csv_name = folder_name.strip(path).split("\\")[1]
for xml_name in xml_names:
# get the sample ID
dna_sampleid = xml_name.strip(folder_name).split(".")[0]
# opening the xml files
seq_blast_result = open(xml_name)
species_records = NCBIXML.parse(seq_blast_result)
dna_sampleID = []
e_value = []
score = []
title = []
order_index = []
for species_record in species_records:
for description in species_record.descriptions:
try:
description
except NameError:
description is None
if description is not None:
title.append(description.title)
score.append(description.score)
e_value.append(description.e)
dna_sampleID = [dna_sampleid]*len(title)
order_index = [num for num in range(1, len(title) + 1)]
else:
title.append('NA')
score.append('NA')
e_value.append('NA')
dna_sampleID = [dna_sampleid]*1
order_index.append('NA')
DNA_SampleID.extend(dna_sampleID)
Title.extend(title)
Score.extend(score)
E_value.extend(e_value)
Order_Index.extend(order_index)