私は、ファイルからのような試合の後readline
にしようとしています:読み取り
with open(jij, "a") as jout:
with open(jfile, "r") as jinp:
for line in jinp:
if line.strip().startswith("IQ"):
# for _ in line:
#for lines in jinp:
for lines in range(2500):
# lines = jinp.readline()
rows = jinp.readline().split()
print("{0:<3s}{1:<3s}{2:<3s}{3:<3s}{4:>3s}{5:>3s}{6:>3s}{7:>15s}{8:>7s}".
format(rows[3], rows[2], rows[0], rows[1], rows[4], rows[5], rows[6], rows[11], rows[10]))
jfile
は(私はgeneraly 1000行の周りに持っているが、それは偶数であり、非常に短いですより大きい):
Isotropic exchange couplings Jij
number of sites NQ = 2
number of types NT = 2
site occupation:
1 1 1 1.000
2 1 2 1.000
IQ IT JQ JT N1 N2 N3 DRX DRY DRZ DR J_ij [mRy] J_ij [meV]
1 1 2 2 -1 -1 -1 -0.500 -0.500 -0.681 0.982 0.159317355 2.167623834
1 1 2 2 0 -1 -1 0.500 -0.500 -0.681 0.982 0.159317355 2.167623834
1 1 2 2 -1 0 -1 -0.500 0.500 -0.681 0.982 0.159317355 2.167623834
1 1 2 2 0 0 -1 0.500 0.500 -0.681 0.982 0.159317355 2.167623834
1 1 2 2 -1 -1 0 -0.500 -0.500 0.681 0.982 0.159317355 2.167623834
1 1 2 2 0 -1 0 0.500 -0.500 0.681 0.982 0.159317355 2.167623834
1 1 2 2 -1 0 0 -0.500 0.500 0.681 0.982 0.159317355 2.167623834
1 1 2 2 0 0 0 0.500 0.500 0.681 0.982 0.159317355 2.167623834
1 1 1 1 0 -1 0 0.000 -1.000 0.000 1.000 1.457569899 19.831256008
1 1 1 1 -1 0 0 -1.000 0.000 0.000 1.000 1.453728096 19.778985590
「IQ」を見つけた後、リストとしていくつかの要素を印刷しようとしています。
私の好みの方法は、for _ in line
で行います。最初の100行のみを使用しています。 for lines in jinp
は1行をスキップし、次の行を読み込みます。私はそれを範囲に入れているときに意図したとおりに動作しています。しかし、私は固定回線番号を入れたくありません。
for _ in line
はどうなりますか?
https://da.gd/CtKZは完全なファイルです。 for lines in range(2500)
https://da.gd/7V8F結果for _ in line
https://da.gd/v9ts結果にfor lines in jinp
と期待される結果がrange(2500)
からですが、私は行番号をハードコーディングしたくありません。あなたのすべてのソリューションは、このライン+別の方法の反復を持って
rows = jinp.readline().split()# This make the pointer point to next line
:
# for _ in line: go over the chars in the line (100)
#for lines in jinp: go over the open file - > so you read twice per iteration
あなたはこの、短いとより読みやすいを使用することができ
あなたの出力と希望の出力を投稿できますか? –
@ t.m.adam:added – BaRud
'for _ in line'は' len(line) 'が100であるので100行を出力します。 "IQ"の後に行を印刷する場合は、それらをリストに入れ、それを反復することができます –