在Python中重新排列缩进后排列列

时间:2013-07-21 04:21:38

标签: python

我的数据集如下:

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选择一个列,因为我选择了错误的列,因为CW2作为单个列条目而不是line[2] AARG和{{{} 1}}代表行line[3] 关于如何改变我的方法的任何想法...

2 个答案:

答案 0 :(得分:1)

尝试切片方法以达到你想要的效果 不要认为这么复杂   使用map(str.split,inp)会使其变得复杂。

答案 1 :(得分: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)

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