0

我的数据集看起来像:

atom 01 B   HEL A1001 -1.09 32.90 22.99  
atom 02 C   ARG A1002 -3.22 22.89 12.00  
atom 03 C1  ARG A1003 -2.99 18.32 22.13  
atom 04 CW2AARG A1004 -2.22 19.99 29.84  
atom 05 WS  HEL A1005 -3.22 18.33 14.21

...
我正在寻找的是纠正第 3 行缩进问题或在 AARG 之前添加一个“空格”或创建一个空格列。它最终应该看起来像..

atom 01 B    HEL A1001 -1.09 32.90 22.99  
atom 02 C    ARG A1002 -3.22 22.89 12.00  
atom 03 C1   ARG A1003 -2.99 18.32 22.13  
atom 04 CW2  AARG A1004 -2.22 19.99 29.84  
atom 05 WS   HEL A1005 -3.22 18.33 14.21

使用for line in map(str.split, inp): x=line[2]
我试图选择一列说通过使用line[2]我得到一个错误的列选择,因为CW2AARG作为单列条目而不是CW2forline[2]AARGfor line line[3]
关于我应该如何改变我的方法的任何想法......

4

2 回答 2

1

尝试切片方法来实现你想要的。
不要想的那么复杂。
使用map(str.split,inp)只会使它变得复杂。

于 2013-07-21T13:37:04.100 回答
0

假设当此列加入时您的氨基酸 ID 将是四个字符长,并且这是唯一有问题的列,此代码应该可以工作:

pdb_data = []
for line in open('input.txt'):
    line = line.split()
    if len(line)<8:
        pre = line[0:2]
        post = line[3:]
        col3 = line[2][:-4]
        col4 = line[2][-4:]
        new_line = pre+[col3,col4]+post
        pdb_data.append(new_line)
    else:
        pdb_data.append(line)

如果它不总是四个字符长,你可以尝试应用一些基本规则来分割字符串:如果字符串中的字符达到一个数字:分割那里。

于 2013-07-21T04:49:13.867 回答