Поэтому в основном у меня есть строка:изменить определенные части строки в Python (значения начальной загрузки обновлений в филогенетических деревьев)
string_1 = '(((A,B)123,C)456,(D,E)789)135'
Содержащие филогенетическое дерево со значениями бутстрапу в скобках обозначение (не очень важно, чтобы вопрос , но в случае, если кто-то задавался вопросом). Это дерево примеров содержит четыре отношения с четырьмя значениями начальной загрузки (числа, следующие за каждой закрывающей скобкой). У меня есть каждый из этих отношений в списке списков:
list_1 = [['(A,B)', 321], ['((A,B),C)', 654],
['(D,E)', 987], ['(((A,B),C),(D,E))', 531]]
каждые из которых содержит отношения и обновленные самозагрузки значения. Все, что мне нужно сделать, чтобы создать окончательную строку:
final = '(((A,B)321,C)654,(D,E)987)531'
, где все значения начальной загрузки обновлены до значений в list_1. У меня есть функция, чтобы удалить значение начальной загрузки:
import re
def remove_bootstrap(string):
matches = re.split(r'(?<=\))\d+\.*\d*', string)
matches = ''.join(matches)
return matches
и код для изолирования отношений:
list_of_bipart_relationships = []
for bipart_file in list_bipart_files:
open_file = open(bipart_file)
read_file = open_file.read()
length = len(read_file)
for index in range(1, length):
if read_file[index] == '(':
parenthesis_count = 1
for sub_index in range(index + 1, length):
if read_file[sub_index] == '(':
parenthesis_count += 1
if read_file[sub_index] == ')':
parenthesis_count -= 1
if parenthesis_count == 0:
bad_relationship = read_file[index:sub_index + 1]
relationship_without_values = remove_length(bad_relationship)
bootstrap_value = extract(sub_index, length, read_file)
pair = []
pair.append(bootstrap_value)
pair.append(relationship_without_values)
list_of_bipart_relationships.insert(0, pair)
break
и я полностью нахожусь в недоумении. Я не могу понять, как заставить программу распознавать более крупные отношения после обновления значения начальной загрузки вложенных отношений. Любая помощь будет принята с благодарностью!