Python 3.x 将行作为列放入二维数组| python
我正在处理名为.pdb的文件类型,我想在二维数组中插入这些行吗?(文件比这里显示的要好)稍后我想分别检索这些字符(例如:HO2'A 10.000 03'), 你能帮我设计2D数组吗?我对python非常陌生。谢谢Python 3.x 将行作为列放入二维数组| python,python-3.x,Python 3.x,我正在处理名为.pdb的文件类型,我想在二维数组中插入这些行吗?(文件比这里显示的要好)稍后我想分别检索这些字符(例如:HO2'A 10.000 03'), 你能帮我设计2D数组吗?我对python非常陌生。谢谢 ATOM 64 HO2' A 2 10.090 1.313 5.546 1.00 0.00 H ATOM 65 O3' A 2 9.461 -1.229 8.060 1.00
ATOM 64 HO2' A 2 10.090 1.313 5.546 1.00 0.00 H
ATOM 65 O3' A 2 9.461 -1.229 8.060 1.00 0.00 O
ATOM 66 P G 3 8.676 -0.774 9.370 1.00 0.00 P
ATOM 67 OP1 G 3 9.541 -0.969 10.560 1.00 0.00 O
这似乎是一种固定宽度的格式,因此最好的解决方案可能是手动指定字段宽度 然而,如果我们想做一些快速而肮脏的事情,我们可以在空白处分开,就像这样:
import re
with open('file.pdb', 'r') as file:
arr = [ re.split("[ \t\r\n]+", line) for line in file ]
这里的字符串“[\t\r\n]+”
是一个正则表达式,与一个或多个空格字符(空格、制表符、回车符或换行符)匹配
如果file.pdb
包含上面的文本,则结果如下:
[
['ATOM', '64', "HO2'", 'A', '2', '10.090', '1.313', '5.546', '1.00', '0.00', 'H', ''],
['ATOM', '65', "O3'", 'A', '2', '9.461', '-1.229', '8.060', '1.00', '0.00', 'O', ''],
['ATOM', '66', 'P', 'G', '3', '8.676', '-0.774', '9.370', '1.00', '0.00', 'P', ''],
['ATOM', '67', 'OP1', 'G', '3', '9.541', '-0.969', '10.560', '1.00', '0.00', 'O', '']
]
请注意,每行末尾都有一个空字段。这是因为在行尾有空格,“分隔”最后一个字段和。。。没什么
这对您来说可能不是问题,但如果是,您可以很容易地将其拆下,例如更换
re.split("[ \t\r\n]+", line)
与
这表示将子列表从列表的开头开始,在列表的结尾之前结束。这段代码对我来说很好,最终的数组类似于arr=[[]],[[[]],[[[]]一行2D数组,如何将这些行作为x[]和列作为Y[]我很想学习通过两个if/while循环的方法,谢谢
re.split("[ \t\r\n]+", line)[:-1]