2016-04-14 3 views
0

Я пытаюсь редактировать метки меток в файле phyloxml, так что они состоят всего из 4 цифр. Например, то, что я сейчас называю в файле phyloxml, - это идентификаторы слева. То, что я хочу, являются идентификаторами справа:Phyloxml: найти и заменить в файле

ACOM042150-PA ACOM 
AQUA008971-PA AQUA 
AGAP002137-PA AGAP 
AARA006802-PA AARA 

код я до сих пор могу срывать символы Я хочу с помощью замены методов:

tree = Phylo.read("GSCGT000003.xml", "phyloxml") 
for i, clade in enumerate(tree.find_clades(name=True)): 
    print clade.name.replace(clade.name, clade.name[0:4]) 

Это будет печатать необходимые имена терминала , но я не уверен, как заменить в файле, или записать в новый файл с изменениями. Я могу писать в новый файл, используя Phylo.write, но я не могу написать файл с изменениями. Есть предположения? Благодарю.

ответ

0

Вы должны изменить имя каждого клады, а затем сохранить дерево в новом файле:

tree = Phylo.read("GSCGT000003.xml", "phyloxml") 

for clade in tree.find_clades(name=True): 
    # This changes the clade name to only the first four chars 
    clade.name = clade.name[:4] 

# At this point all clade names has been changed in-place 
Phylo.write(tree, "GSCGT000003_modified.xml", "phyloxml") 
+0

Это отлично работает. Благодаря! – spiral01