前提・実現したいこと
WEBサイトからダウンロードしたTextfileを一行毎に読み出したいと思いました。実行結果は一文字毎に読み出していいました。
コード中最終的には「f」に代入したつもりです。これをprint(f)でターミナルに出力すると下のように正常に見えます。
N-S E-W Contract N-S E-W MP
B04 B30 5C N 5 400 27
B31 B05 2NT S 5 210 26
B18 B13 4C N 5 150 24.5
A09 A20 3C N 5 150 24.5
B24 B12 4C N 4 130 22
A02 A22 4C N 4 130 22
A07 A15 4C N 4 130 22
A03 A23 3C N 3 110 20
A19 A11 4S E-2 100 19
B07 B32 3S E-1 50 13
A17 A12 3S E-1 50 13
A21 A04 3S E-1 50 13
A24 A01 3S E-1 50 13
B03 B20 3S E-1 50 13
A05 A16 3S E-1 50 13
B23 B06 3S E-1 50 13
B25 B16 3S E-1 50 13
B26 B01 3S E-1 50 13
B09 B22 3S E-1 50 13
A10 A18 3S E-1 50 13
B28 B10 5C N-1 50 7
B19 B15 6C N-2 100 5.5
B17 B11 5Cx N-1 100 5.5
A14 A06 3S E 3 140 2.5
B14 B27 3S E 3 140 2.5
B02 B29 3S E 3 140 2.5
B21 B08 3S E 3 140 2.5
A13 A08 4S E 4 420 0
しかし
for line in f:
print(line)
で行毎に取り出そうとして printした内容は以下、上の行単位出力の最後の行が文字単位で出力されて見える。(され以前は表示範囲を超えているようで見えない。
0
8
4
S
E
4
4
2
0
0
print(type(f)) は <class 'str'> ですが print(hasattr(f, "line")) を見ると False になっています。
私にはどこで間違っているのか全く解りません。terxt文書のtyoeはstr と思っていましたが間違いなのでしょうか。
■■動作確認時に以下の期待しない動作がありました。
for line in f:で取り込んだ内容が行単位でなく、文字単位で取り込まれている。
該当のソースコード
python3.9
1from typing import Text 2import requests 3from bs4 import BeautifulSoup as bs4 4import dataclasses 5 6with open('tyest.txt', 'w') as f: 7 load_url = "https://sendaibc.sakura.ne.jp/traveling/trv_2017aob_1.txt" 8 html = requests.get(load_url) 9 soup = bs4(html.content,"html.parser") 10print(f) 11print(type(f)) 12 13f = soup.text 14 print(type(f)) 15 16print(f) #これはTextfileとしてターミナルに正常に出力される 17 18for line in f: #行単位でなく、文字単位にターミナルに表示される 19 print(line) 20print(type(f)) 21print(hasattr(f, "line"))
試したこと
他の行単位出力tン位ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件