前提・実現したいこと
txtファイルを読込み加工した後np.savetxtでセーブしようとしましたがエラーになりセーブできません。
textファイルの読み込みセーブはnp.loadtxt np.savetxtを使用してます。なお最後にf.closeをするとエラー
が発生します。自分はopen closeがセットになっているため、loadしたらsaveしないとまずいのかと思っています。
セーブできない原因とsavetxtがうまくいけばcloseは必要ないかについて教えて下さい。
また、np.savetxtの書式についても教えて下さい。
https://deepage.net/features/numpy-loadsavetxt.htmlの内容をを参考にしました。
発生している問題・エラーメッセージ
B08 B09 3S N 4 170 9.5 print(trv_2017khk_1)の実行結果(ここまでは正常) A19 A11 2S N 4 170 9.5 同上 C17 C05 3S N 3 140 4.5 同上 C04 C07 3S N 3 140 4.5 同上 B16 B07 3S N 3 140 4.5 同上 B17 B11 2S N 3 140 4.5 同上 A09 A20 4S N-1 50 2 同上 A02 A22 4S N-2 100 0.5 同上 C11 C16 4S N-2 100 0.5 print(trv_2017khk_1)の実行結果(ここまでは正常) Traceback (most recent call last): File "c:\Users\shiraishikiichi\pytext\scrap.py", line 17, in <module> np.savetxt(trv_2017khk_1) File "<__array_function__ internals>", line 4, in savetxt TypeError: _savetxt_dispatcher() missing 1 required positional argument: 'X' PS C:\Users\shiraishikiichi\pytext>エラーメッセージ
該当のソースコード
python
1import tkinter as tk 2from tkinter.constants import NORMAL 3import requests 4import numpy as np 5from bs4 import BeautifulSoup 6 7f = np.loadtxt('trv_2017khk_1.txt',dtype = 'str') 8print(f) 9load_url = "https://sendaibc.sakura.ne.jp/traveling/trv_2017khk_1.txt" 10html = requests.get(load_url) 11 12soup = BeautifulSoup(html.content, "html.parser") 13trv_2017khk_1 = soup **ここまでは正常に動作** 14#print(f) 15 16print(trv_2017khk_1) 17np.savetxt(trv_2017khk_1) 18f.close() 19
試したこと
np.savetxt(trv_2017khk_1)でもnp.savetxt("trv_2017khk_1")でも同じでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
加工するコードが見当たりませんが、numpy.savetxt は、
https://numpy.org/doc/stable/reference/generated/numpy.savetxt.html
に書いてある通り、
np.savetxt("trv_2017khk_1.txt", trv_2017khk_1)
とします。
ありがとうございます。回答の通りに修正した所下記のエラーm、エッセージが表示されました。
Traceback (most recent call last):
File "C:\Users\shiraishikiichi\AppData\Local\Programs\Python\Python39\lib\site-packages\numpy\lib\npyio.py", line 1435, in savetxt
v = format % tuple(row) + newline
TypeError: must be real number, not numpy.str_
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\Users\shiraishikiichi\pytext\scrap.py", line 17, in <module>
np.savetxt("trv_2017khk_1.txt", trv_2017khk_1)
File "<__array_function__ internals>", line 5, in savetxt
File "C:\Users\shiraishikiichi\AppData\Local\Programs\Python\Python39\lib\site-packages\numpy\lib\npyio.py", line 1437, in savetxt
raise TypeError("Mismatch between array dtype ('%s') and "
TypeError: Mismatch between array dtype ('<U32414') and format specifier ('%.18e')
よろしくお願いいたします。array typeでないとだめなのでしょうか。
はい、savetxt は保存対象が array type であることが前提になっています。それから、
trv_2017khk_1 = soup
とされていますが、これは
trv_2017khk_1 = soup.text
としないと中身(テキストデータ)が取れません。
加工するコードは下記です
load_url = "https://sendaibc.sakura.ne.jp/traveling/trv_2017khk_1.txt"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
trv_2017khk_1 = soup
print(trv_2017khk_1) で trv_2017khk_1 に取り込まれていることを確認しています。
それですとテキストデータのままなので、numpy.ndarray に変換する何らかの操作が必要になるはずです。それと、
print(type(trv_2017khk_1))
として確認してみるとお判りかと思いますが、trv_2017khk_1 は bs4.BeautifulSoup クラスのインスタンスになっていて、
print(trv_2017khk_1) は trv_2017khk_1.__str__() の実行結果になります。
ありがとうございます。たしかにtrv_2017khk_1のtypeはbs4.BeautifulSoup クラスのインスタンスになっていました。npクラスのインスタンスに出来る方法を考えてみます。meilianさんの回答をベストアンサーに
したいのですが他の似た趣旨の回答をベストアンサーとしますのでご了承下さい。
回答1件
あなたの回答
tips
プレビュー