如何在python中从列表中检索特定信息?

2024-05-16 01:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,我想从中检索特定的信息

首先,我提取了感兴趣的行,并将它们放在一个列表中:

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…等),但我不知道怎么做。如您所见,我的列表中的元素都是句子,我对如何检索本例中的特定信息有点困惑。我非常感谢你的帮助或建议


Tags: in信息列表titlelinearrayfilemembrane
2条回答

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)

试试这个:

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))

相关问题 更多 >