- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想读取一些 .sdf 文件(实际上是 .mdl 文件,但当我下载它们时它们显示为 .sdf),以便制作一个程序将它们更改为另一种格式。 .sdf 文件模拟分子,但这与那里无关。
我想阅读忘记债券的坐标,所以我需要从这样的文件格式:
ALA
CCTOOLS-0424210918
13 12 0 0 1 0 0 0 0 0999 V2000
2.2810 26.2130 12.8040 N 0 0 0 0 0
1.1690 26.9420 13.4110 C 0 0 0 0 0
1.5390 28.3440 13.8740 C 0 0 0 0 0
2.7090 28.6470 14.1140 O 0 0 0 0 0
0.6010 26.1430 14.5740 C 0 0 0 0 0
0.5230 29.1940 13.9970 O 0 0 0 0 0
2.0330 25.2730 12.4930 H 0 0 0 0 0
3.0800 26.1840 13.4360 H 0 0 0 0 0
0.3990 27.0670 12.6130 H 0 0 0 0 0
-0.2470 26.6990 15.0370 H 0 0 0 0 0
0.3080 25.1100 14.2700 H 0 0 0 0 0
1.3840 25.8760 15.3210 H 0 0 0 0 0
0.7530 30.0690 14.2860 H 0 0 0 0 0
1 2 1 0 0 0
1 7 1 0 0 0
1 8 1 0 0 0
2 3 1 0 0 0
2 5 1 0 0 0
2 9 1 0 0 0
3 4 2 0 0 0
3 6 1 0 0 0
5 10 1 0 0 0
5 11 1 0 0 0
5 12 1 0 0 0
6 13 1 0 0 0
M END
$$$$
我想从第 3 行开始阅读,直到数字前只有 2 个空格。
file=open('ALA_model.sdf',mode="r")
string_list=file.readlines()
file.close()
datasplit=[]
for i in range(len(string_list)):
datasplit.append(string_list[i].split(" "))
(快速提醒:ALA_model.sdf 是上面文件的名称,但不是我必须处理的唯一文件。请随意使用上面的 ALA 文件,因为我是从
http://ligand-expo.rcsb.org/reports/A/ALA/ALA_model.sdf 下载的)
datasplit[3]=['', '13', '12', '', '0', '', '0', '', '1', '', '0', '', '0', '', '0', '', '0', '', '0999', 'V2000\n']
这将意味着开始阅读。然后我们有:
datasplit[4]=['', '', '', '', '2.2810', '', '', '26.2130', '', '', '12.8040', 'N', '', '', '0', '', '0', '', '0', '', '0', '', '0\n']
我只需要前三个数字和字母/原子,但我可以自己处理。
datasplit[17]=['', '', '1', '', '2', '', '1', '', '0', '', '0', '', '0\n']
是我不想读的第一行。
最佳答案
另一种选择可能是使用 file.read()
读取整个文件。 , 并重复匹配以 3 个或更多空格开头的所有行,后跟可选的 -
和使用模式的数字。
^ {3,}-?\d.*(?:\r?\n {3,}-?\d.*)*
^
字符串开头 {3,}-?\d.*
匹配 3 个或更多空格,可选 -
, 一个数字和该行的其余部分 (?:\r?\n {3,}-?\d.*)*
(可选)再次重复换行符和相同的模式 splitlines()
和
split()
每行,将前 4 项附加到
datasplit
.
import re
from pprint import pprint
file = open('ALA_model.sdf', mode="r")
content = file.read()
file.close()
match = re.search(r"^ {3,}-?\d.*(?:\r?\n {3,}-?\d.*)*", content, re.M)
datasplit = []
if match:
for line in match.group().splitlines():
datasplit.append([part for part in line.split()][:4])
pprint(datasplit)
输出
[['2.2810', '26.2130', '12.8040', 'N'],
['1.1690', '26.9420', '13.4110', 'C'],
['1.5390', '28.3440', '13.8740', 'C'],
['2.7090', '28.6470', '14.1140', 'O'],
['0.6010', '26.1430', '14.5740', 'C'],
['0.5230', '29.1940', '13.9970', 'O'],
['2.0330', '25.2730', '12.4930', 'H'],
['3.0800', '26.1840', '13.4360', 'H'],
['0.3990', '27.0670', '12.6130', 'H'],
['-0.2470', '26.6990', '15.0370', 'H'],
['0.3080', '25.1100', '14.2700', 'H'],
['1.3840', '25.8760', '15.3210', 'H'],
['0.7530', '30.0690', '14.2860', 'H']]
Python demo
关于Python读取sdf/mdl坐标: How to read until two spaces are met?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67320397/
这是一个非常基本的 Material Design Lite 问题,但这让我发疯了。在以下示例中来自 MDL examples website , 具有 mdl-layout-spacer 类的 di
每当我创建一个 mdl-card 时,它就会卡在 330px 宽,甚至当我分配类 mdl-cell mdl-cell--12-col 或 mdl-cell--8-col 或任何东西,它只是保持“mdl
我正在尝试使用 material-design-lite mdl-textfield在 mdl-menu 里面. 问题是,当我打开菜单并单击文本字段 ( ) 时,它会关闭菜单。 有谁知道如何在不手动
看似正常的 jQuery.validate 与 MDL 用例却出现了问题。请参阅this gist . 这工作正常: Without MDL 1 2 $(function
前一段时间,在 Apache Flex 项目中,我们已经开始将 MDL 库移植到 FlexJS 框架中。 [1] 当我在处理 Toast 组件时,我遇到了一个问题,即从 HTML 中删除“mdl-sn
如何设置 CSS 以更改此 Material Design Lite 标题的高度。 .mdl-layout__header{ margin: 0;
我们有一个旧版 AngularJS Web 应用程序,它使用 Material Design Lite UI 框架。 几天前,带有 mdl-button 和 mdl-js-ripple-effect
我尝试使用 hibernate 创建一对一映射并保存 SQL 数据库,但我运行我的项目时出现以下错误: Initial SessionFactory creation failed.org.hiber
MDL正在页面加载时升级其组件,因此 与 autofocus属性失去焦点。我想在 MDL 完成重新渲染后将焦点设置在此输入上。 我正在尝试监听某些页面准备就绪事件( codepen ): $('inp
我在让我的代码:( http://codepen.io/hoschiCZ/pen/rOJmmr) 工作时遇到问题。 The title doesn't matter
我正在使用 Google 刚刚发布的 Material Design Lite CSS/JS"template"将一些 Material Design 应用到我的 Angular 应用中,我注意到按钮
我正在使用 MDL - getmdl.io 版本 1.3.0 我在让日期表单域执行我想要的操作时遇到问题。它不仅显示标签字段,还显示默认的占位符 . 理想情况下,我不想展示这个。但是,如果必须的话,
在我的网站 ( Link )(通过 Google 运行 MDL)中,我遇到了一个恼人的问题,您可以在 #harule 选项卡消失之前看到它一会儿。该选项卡没有属性 is-active,并且应该隐藏在页
如下图所示,我的 MDL 开关未与其标签对齐。我尝试过的居中技术没有任何效果。它们是: margin: 0 auto display: inline-block与 text-align: center
嗨,我试图让以下代码显示在导航栏的右侧,但是当我这样做时,它只显示一半(换句话说,菜单的一半是正确的:-32px; - 我还没有添加任何 CSS(这是默认的 Material Design lite
当用户在 Chrome 或任何浏览器中从全屏转到窗口 View 时。主类 mdl-layout__content 似乎添加了一个垂直(上下)滚动条,这意味着现在用户屏幕的右侧有两个滚动条。 据我所知,
在我的网站上,我无法发布链接,因为这是一个受管理员/版主保护的目录,我正在运行 Google MDL,并且遇到了表单问题。 页面加载后,每个输入框和文本区域的底线都会变成红色,表示添加了类 is-in
我需要帮助来安排带有网格的 mdl 卡内的组件。我是网页设计的新手,有人可以帮忙解释一下如何安排。这里我创建了三张卡片,需要在三张卡片中放置切换开关。 thome | DashBoard
来自 getmdl.io/components/index.html#layout-section 我打开链接 https://codepen.io/anon/pen/MEoBqG 当我保存 html
我使用来自 https://getmdl.io/components/#dialog-section 的 Material Design Lite 创建了一个模态对话框.但我面临的问题是对话框外的区域
我是一名优秀的程序员,十分优秀!