Python 用字符串将 txt 加载到数组中

Python load txt into array with string

我想将我的关注从 txt 加载到一个数组中。

发件人:

ATOM      1  N   ASP P   1     -13.459   3.135 -11.039  1.00  0.00      PROT N
ATOM      2  HT1 ASP P   1     -13.111   4.105 -11.181  1.00  0.00      PROT H
ATOM      3  HT2 ASP P   1     -14.481   3.257 -11.190  1.00  0.00      PROT H

到两个数组:

[[ 'ATOM', '1', 'N', 'ASP', 'P', '1' ], [ 'ATOM', '1', .....] ]

和一个浮点数数组供以后numpy.dot计算

array([ [-13.459, 3.135, -11.039], [-13.111, 4.105, -11.181], [....] ])

有人知道怎么做吗?

看完str.splitdocumentation.

If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator

您可以只使用 split 函数而无需正则表达式。

list1 = []
list2 = []
with open("Whosebug.txt", "r") as f:  
    for line in f.readlines():
        l = line.split()
        list1.append(l[:6])
        list2.append(l[6:9])
print list1
print list2    

结果

[['ATOM', '1', 'N', 'ASP', 'P', '1'], ['ATOM', '2', 'HT1', 'ASP', 'P', '1'], ['ATOM', '3', 'HT2', 'ASP', 'P', '1']]
[['-13.459', '3.135', '-11.039'], ['-13.111', '4.105', '-11.181'], ['-14.481', '3.257', '-11.190']]

感谢 Vignesh Kalai 的评论。

试试这个,希望它有效!

var="ATOM 1 N ASP P 1 -13.459 3.135 -11.039 1.00 0.00 PROT N"
list=var.split() 
list1=[] list2=[] 
list1.append(list[0:5]) 
list2.append(list[6:9])