質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

801閲覧

API経由でで取得したデータを単純にテキストで出力したい ver2

taboopython

総合スコア40

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/06/18 08:16

出力した内容がテキストファイルを出力したいのですが、うまくいきません。

先に解決した内容との違いは、queryを使っているところとAPIからの取得データ型なのかとは思っているのですが。。

まだまだ理解が及ばず、原因・対策をご教示いただければ幸いです。

python

1import sys 2import urllib.request as req 3import urllib.parse as parse 4 5if len(sys.argv) <= 1: 6 print("USAGE: x.py(keyword)") 7 sys.exit() 8keyword = sys.argv[1] 9 10API = "xxxxxxxxx" 11query = { 12 "fmt": "ini", 13 "key": keyword 14} 15params = parse.urlencode(query) 16url = API + "?" + params 17print("url=", url) 18 19with req.urlopen(url) as r: 20 b = r.read() 21 data = b.decode('utf-8') 22 print(data) 23 24data.to_csv("y.csv")

最後の行ですが、

python

1with open("hoge.txt", "w") as f: 2 print(data, file=f)

差し替えてみてもうまくいきませんでした。

なお $python xxxx.py > ○○.txt と実行する手段は除きます。

実行環境はmacX python3系です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/06/18 09:00

> 差し替えてみてもうまくいきませんでした。 具体的にどううまくいかなかったのか記載ください。
taboopython

2019/06/18 09:30

csvで吐き出そうとすると、次のようなエラーになり、 AttributeError: 'str' object has no attribute 'to_csv' 単純テキストで吐き出そうとすると、ブランクになってしまいます。
can110

2019/06/18 09:33

「print(data)」の結果も記載ください。
guest

回答2

0

ベストアンサー

質問文にはどのように上手く行かなかったのかが書いてありませんが(この回答を見たら質問文に追記しておいてください)、コードを見てとりあえずわかること。

python

1with req.urlopen(url) as r: 2 b = r.read() 3 data = b.decode('utf-8') 4 print(data) 5 6data.to_csv("y.csv")

この操作だとdatastrになるはずです。to_csvpandas.DataFrameのメソッドでそういうのがありますが(他にもあるかも)、他の型には使えない訳です。

python

1with open("hoge.txt", "w") as f: 2 print(data, file=f)

こっちはぱっと見成功しそう。

文字コード周りでエラーになったか、カレントディレクトリが想定と違う場所にあって意図しないところにファイルが作られているか、それくらいですかね。

投稿2019/06/18 09:37

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taboopython

2019/06/18 09:44

ありがとうございます!自分自身まだdata型の理解が浅いようですが少し理解が深まりました!
guest

0

with open("hoge.txt", "w") as f:
print(data, file=f)

一番下の行で完全に差し替えて以下を実行した結果、うまくテキストに吐き出せました。理由と仕組みがよくわかりませんが、結果的に解決しました。

ちなみに先に実行したコードは、こんな感じでやっていたかもしれません。お騒がせしました。
with req.urlopen(url) as r:
b = r.read()
data = b.decode('utf-8')
print(data,stream)

python

1with req.urlopen(url) as r: 2 b = r.read() 3 data = b.decode('utf-8') 4 print(data) 5 6with open("hoge.txt", "w") as f: 7 print(data, file=f)

投稿2019/06/18 09:39

taboopython

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問