我的数据集如下:
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]
关于如何改变我的方法的任何想法...
答案 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)
如果长度不总是四个字符,您可以尝试应用一些基本规则来分割字符串:如果字符串中的字符达到一个数字:拆分那里。