我正在尝试阅读一个看起来像这样的文件:
Protein in water
5826
300LEU N 2945 7.972 16.153 13.055 -0.0183 0.4861 -0.4376
300LEU H 2946 8.006 16.194 13.139 1.5894 1.3176 -1.4422
300LEU CA 2947 8.017 16.020 13.016 0.1247 0.7136 -0.1096
300LEU CB 2948 8.157 15.990 13.077 -0.0499 0.0576 0.0414
300LEU CG 2949 8.273 16.081 13.032 -0.3927 -0.5342 0.1311
300LEU CD1 2950 8.271 16.143 12.895 0.2232 0.1271 0.2677
300LEU CD2 2951 8.281 16.197 13.136 0.0409 -0.0097 0.0710
300LEU C 2952 7.917 15.908 13.047 0.5031 0.0949 0.0620
300LEU O 2953 7.955 15.799 13.093 -0.2261 -0.5800 0.0226
我必须剥离前两行并分别读取不同的列。 我试过这个:
with open('file.txt') as fa:
for line_aa in fa.readlines()[3:11]:
line_aa = line_aa.strip()
print line_aa
col1,col2,col3,col4,col5,col6,col7,col8,col9 = line_aa.split('\t',9)
但是我收到以下错误:
300LEU H 2946 8.110 15.548 13.027 -0.0632 0.8718 -0.8443
Traceback (most recent call last):
File "rmsd_cg_vs_aa.py", line 50, in <module>
col1,col2,col3,col4,col5,col6,col7,col8,col9 = line_aa.split('\t',9)
ValueError: need more than 1 value to unpack
我在这里缺少什么?
答案 0 :(得分:4)
您正在拆分标签,尝试拆分空白而不是仅使用:
str.split()
那么你应该得到你想要的东西。
答案 1 :(得分:0)
我认为在这一行'300LEU H 2946 8.110 15.548 13.027 -0.0632 0.8718 -0.8443'。 Python将空格视为普通空格而不是制表符(\ t)。请尝试打印空白的ascii(ord()),并确保它是'\ t'。如果没有用适当的字符分割字符串。也许你可以用空间拆分并剥离它。
答案 2 :(得分:0)
由于某种原因,\ t分割只返回一个值,因此在尝试将这一个值应用于第1列到第9列时会引发错误。
试试这个:
print(len(line_aa.split('\t',9))
它打印1对吗?
我建议你只用空格而不是标签分开:
col1,col2,col3,col4,col5,col6,col7,col8,col9 = line_aa.split(maxsplit=9)