У меня есть файл, из которого я хотел бы получить конкретную информацию.
Сначала я выделил интересующие строки и поместил их в список:
array = []
file_in = open("Traj.pdb", "r")
for line in file_in:
if line.startswith('TITLE'):
array.append(line)
В итоге я получаю такой список:
['TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500000.00000\n', 'TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500020.00000\n', 'TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500040.00000\n']
Я хотел бы извлечь информацию "t =" (t = 1500000.00000, t = 1500020.00000, t = 1500040.00000 ... и т. д.), Но я не знаю, как это сделать. Как видите, элементы моего списка являются предложениями, и я немного не понимаю, как я могу получить конкретную информацию в этом случае. Буду очень признателен за вашу помощь или совет.






Попробуй это:
import re
array_with_elements_i_want = []
for elem in array:
array_with_elements_i_want.append(re.search(r"t= (.)*", elem).group(0))
Или даже лучше:
import re
array_with_elements_i_want = []
for elem in array:
v = re.search(r"t= (.)*", elem)
if v is not None:
array_with_elements_i_want.append(v.group(0))
разделите ваш список на t=, он даст вам левую и правую половины. Вам нужна только правая половина, то есть контент после t=. Также убедитесь, что вы удалили новый строчный символ \n в конце правой половины.
l = ['TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500000.00000\n', 'TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500020.00000\n', 'TITLE Protein in INSANE! Membrane UpperLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 LowerLeaflet>POPC:POPE:CHOL=31.0:41.0:28.0 t= 1500040.00000\n']
result = []
for line in l:
splitted_arr = line.split("t= ")
# Consider only the right half
splitted_arr = splitted_arr[1]
# Remove the last character i.e \n
splitted_arr = splitted_arr[:len(splitted_arr)-1]
result.append(splitted_arr)
print(result)
Кажется строчка тебе нужен
array.append(line.strip().split('=')[-1])взамен