IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习笔记:mol2转换列表工具实验 -> 正文阅读

[Python知识库]python学习笔记:mol2转换列表工具实验

mol2里面有一些日常用到原子信息,这些信息在日常实验过程,会有快速转换列表的需求。下面,我们看看这个怎么转换。首先我们抽出一段截取的文件信息。通过如下代码将每一行进行列表展示。


mol2str = '''1 C1         13.8060   37.7840   36.1770 C.2       1 DHY         0.0445
      2 C2         13.5920   36.3210   35.7700 C.3       1 DHY         0.0261
      3 C1'        12.4160   35.9970   34.8980 C.ar      1 DHY        -0.0497
      4 C2'        12.3640   36.6850   33.6940 C.ar      1 DHY        -0.0384
      5 C3'        11.3370   36.4780   32.8090 C.ar      1 DHY         0.1101
      6 O3'        11.0820   37.0600   31.5790 O.3       1 DHY        -0.3385
      7 C4'        10.3460   35.5510   33.1180 C.ar      1 DHY         0.1090
      8 O4'         9.4350   35.4550   32.0850 O.3       1 DHY        -0.3413
      9 C5'        10.3720   34.8500   34.3070 C.ar      1 DHY        -0.0479
     10 C6'        11.4240   35.0560   35.2000 C.ar      1 DHY        -0.0784
     11 O1         14.4450   38.0110   37.1970 O.co2     1 DHY        -0.5667
     12 O2         13.2690   38.7890   35.7080 O.co2     1 DHY        -0.5667
     13 H1         13.4835   35.7366   36.6956 H         1 DHY         0.0566
     14 H2         14.4958   35.9951   35.2344 H         1 DHY         0.0566
     15 H3         13.1455   37.3954   33.4498 H         1 DHY         0.0453
     16 H4         11.0657   36.3870   30.9088 H         1 DHY         0.2442
     17 H5          9.6743   36.0633   31.3957 H         1 DHY         0.2420
     18 H6          9.5825   34.1462   34.5446 H         1 DHY         0.0493
     19 H7         11.4732   34.4902   36.1233 H         1 DHY         0.0439'''


def mo2list(txt, filter=''):
    list = txt.split("\n")
    result = ''
    for line in list:
        listItem = line.split()
        if filter != '':
            filter_list = filter.split(',')
            result += "[" + ",".join(listItem[int(i)] for i in filter_list) + "],\n"
        else:
            result += "[" + ",".join(listItem) + "],\n"

    print(result)

if __name__ == '__main__':
    mo2list(mol2str)

转换出来是一个列表存储结构。
在这里插入图片描述

代码过程理解为对这个元素采取分步处理,添加对应的逗号过程。但是发现如果我们只是需要其中某项则可以采取过滤方法。获取我们需要关键部分信息。如下代码。

if __name__ == '__main__':
    # mo2list(mol2str)
    mo2list(mol2str, '1,2,3,4')

在这里插入图片描述

在上述操作中,有了这个思路,我们可以在项目过程实现了一个QT交互操作实现这个过程。在可视化操作基础上,利用上述操作过程,达到快速转换Mol2文件里面数据的目的。
在这里插入图片描述
如下关键代码。


from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit, QHBoxLayout,
                             QTextEdit, QVBoxLayout)



class ListConver(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 数据快速转换列表

        self.vLayout = QVBoxLayout(self)
        self.vLayout.setContentsMargins(10, 10, 10, 10)

        hbox = QWidget()
        self.vLayout.addWidget(hbox)

        self.horizontalLayout = QHBoxLayout(hbox)
        self.horizontalLayout.setSpacing(6)

        self.textEdit = QTextEdit(hbox)
        self.horizontalLayout.addWidget(self.textEdit)

        self.textEdit_2 = QTextEdit(hbox)
        self.horizontalLayout.addWidget(self.textEdit_2)

        self.output = QLineEdit()
        self.output.setPlaceholderText('输入需要过滤列表序列,如 0,1,2按逗号进行分隔')
        self.vLayout.addWidget(self.output)

        self.pushButton = QPushButton('转换')
        self.pushButton.resize(80, 20)
        self.pushButton.clicked.connect(self.onChane)
        self.pushButton.setStyleSheet(''' 
                                      QPushButton
                                      {text-align : center;
                                       color: #fff;
                                       background-color: #354052;
                                       border:none;
                                       padding: 6px;
                                       height:30px;
                                       line-height:44px;
                                       font : 12px;}
                                      ''')
        self.vLayout.addWidget(self.pushButton)

    def onChane(self, e):
        txt = self.textEdit.toPlainText()
        if txt != "":
            filter = self.output.text()
            list = txt.split("\n")
            result = ''
            for line in list:
                listItem = line.split()
                if filter != '':
                   filter_list = filter.split(',')
                   result += "[" + ",".join(listItem[int(i)] for i in filter_list) + "],\n"
                else:
                  result += "[" + ",".join(listItem) + "],\n"
            self.textEdit_2.setText(result)


有了此思路制作的小工具,可以对日常数据进行实验,清洗,抽取和转换,方便各种格式之间转换。总体思路过程也十分简单。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:45:10  更:2021-10-15 11:47:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:26:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码