1

次のようなファイルを読み込もうとしています。

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

最初の2行を削除して、異なる列を個別に読み取る必要があります。私はこれを試しました:

 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

ここで何が欠けていますか?

4

3 に答える 3

4

タブで分割しています。代わりに、次を使用して空白で分割してみてください。

str.split()

そうすれば、欲しいものを手に入れることができます。

于 2012-08-10T11:43:14.780 に答える
0

この行で「300LEU H 2946 8.110 15.548 13.027 -0.0632 0.8718 -0.8443」だと思います。Python は空白をタブ (\t) ではなく通常のスペースと見なします。空白の ascii (ord()) を印刷してみて、'\t' であることを確認してください。適切な文字で文字列を分割しない場合。スペースで分割して削除できる場合があります。

于 2012-08-10T11:43:24.773 に答える
0

何らかの理由で \t で分割すると 1 つの値しか返されないため、その 1 つの値を列 1 から 9 に適用しようとするとエラーがスローされます。

これを試して:

print(len(line_aa.split('\t',9))

それは1右を印刷しますか?

タブではなく空白で分割することをお勧めします。

col1,col2,col3,col4,col5,col6,col7,col8,col9 = line_aa.split(maxsplit=9)
于 2012-08-10T11:46:39.380 に答える