如何在 Pymol 中执行删除命令的范围表达式?

How to execute a range expression for delete command in Pymol?

我正在使用 PyMol,现在我必须编写一个长命令来在拆分状态后删除无用的文件:

split_states posesD01;

delete posesD01_0002;delete posesD01_0003;delete posesD01_0004;delete posesD01_0005;delete posesD01_0006;delete posesD01_0007;delete posesD01_0008;delete posesD01_0009;

我想避免删除 posesD01_0001

我尝试使用正则表达式将其减少为:

split_states posesD01;

delete posesD01_000[2-9];

但它什么也没做。它不会抛出任何错误,但也不会执行任何操作。

欢迎提出任何建议。 感谢阅读!

PyMOL 提示接受通配符 (*)。如果这适合你,那将是最简单的方法。

delete posesD01_000*

要选择更多 fine-tuned 个数字,可以使用纯 python 循环。

for i in range(2, 10): cmd.delete(f"posesD01_000{i}")

要处理前导零(在更大范围的情况下),必须设置明确的格式。

for i in range(0, 50): cmd.delete(f"posesD01_00{i:02d}")

顺便说一句,你不需要在每个命令的末尾写一个分号。这是python! :)