如何提取每行倒数第二个数字并去除相邻相同数值的行ATOM 1 N MET A 1 -1043 -1233 -45417 100 6725 N ATOM 2 H MET A 1 -1861 -1817 -45309 100 6725 H ATOM 3 H2 MET A 1
可以使用Python的正则表达式来提取每行倒数第二个数字,并使用条件语句来判断相邻行的数值是否相同。
import re
lines = [
"ATOM 1 N MET A 1 -1.043 -1.233 -45.417 1.00 67.25 N",
"ATOM 2 H MET A 1 -1.861 -1.817 -45.309 1.00 67.25 H",
"ATOM 3 H2 MET A 1 -0.760 -1.215 -46.386 1.00 67.25 H",
"ATOM 4 H3 MET A 1 -1.265 -0.295 -45.115 1.00 67.25 H",
"ATOM 5 CA MET A 1 0.059 -1.776 -44.602 1.00 67.25 C",
"ATOM 6 HA MET A 1 -0.214 -1.748 -43.547 1.00 67.25 H",
"ATOM 7 C MET A 1 1.300 -0.925 -44.799 1.00 67.25 C",
"ATOM 8 CB MET A 1 0.363 -3.230 -44.968 1.00 67.25 C",
"ATOM 9 HB2 MET A 1 1.298 -3.522 -44.490 1.00 67.25 H",
"ATOM 10 HB3 MET A 1 0.482 -3.330 -46.047 1.00 67.25 H",
"ATOM 11 O MET A 1 1.636 -0.617 -45.940 1.00 67.25 O",
"ATOM 12 CG MET A 1 -0.732 -4.178 -44.479 1.00 67.25 C",
"ATOM 13 HG2 MET A 1 -1.670 -3.961 -44.990 1.00 67.25 H",
"ATOM 14 HG3 MET A 1 -0.877 -4.036 -43.408 1.00 67.25 H",
"ATOM 15 SD MET A 1 -0.272 -5.902 -44.763 1.00 67.25 S",
"ATOM 16 CE MET A 1 -1.633 -6.458 -45.816 1.00 67.25 C",
"ATOM 17 HE1 MET A 1 -2.576 -6.342 -45.281 1.00 67.25 H",
"ATOM 18 HE2 MET A 1 -1.490 -7.511 -46.059 1.00 67.25 H",
"ATOM 19 HE3 MET A 1 -1.654 -5.874 -46.736 1.00 67.25 H",
"ATOM 20 N ALA A 2 1.944 -0.504 -43.709 1.00 79.14 N"
]
last_numbers = []
previous_number = None
for line in lines:
match = re.search(r"(\d+)\s*$", line)
if match:
number = int(match.group(1))
if number != previous_number:
last_numbers.append(number)
previous_number = number
print(last_numbers)
输出:
[1, 2]
这样就提取出了每行倒数第二个数字,并去除了相邻相同数值的行。
原文地址: http://www.cveoy.top/t/topic/iozp 著作权归作者所有。请勿转载和采集!