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

时间:2015-08-13 05:22:23

标签: python arrays string load

我想将我的以下内容从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], [....] ])

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:1)

阅读str.split documentation

  

如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符

只使用split函数,您可以在没有正则表达式的情况下执行此操作。

list1 = []
list2 = []
with open("stackoverflow.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的评论。

答案 1 :(得分:0)

试试这个,希望它有效!

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])