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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2276閲覧

青空文庫からデータを抽出し、ファイル作成を行いたい

kaitoo

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/22 12:02

前提・実現したいこと

青空文庫から「注文の多い料理店」の作品データを抽出・ファイルを作成し、以下のように表示されるようにしたいのですが、以下のようなエラーとなり困っています。初歩的な質問で申し訳ありませんが、力をお貸しいただけると幸いです。

Download URL
URL: https://www.aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip
43754_ruby_17594/chumonno_oi_ryoriten.txt
ファイルの作成:chumonno_oi_ryoriten.txt

発生している問題・エラーメッセージ

ValueError: unknown url type: '-f'

該当のソースコード

python

1# -*- coding: utf-8 -*- 2 3import re 4import zipfile 5import urllib.request 6import os.path,glob 7import sys 8#ダウンロードしたいURLを入力する 9# URL = 'https://www.aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip' 10args = sys.argv 11 12URL = args[1] 13 14if len(URL) == '': 15 print('https://www.aozora.gr.jp/') #青空文庫のURLを入力してください 16 sys.exit() 17 18def main(): 19 download_text = download(URL) 20 print(download_text) 21 text = convert(download_text) 22 # m = re.search('//(\D+)', download_text) 23 # print(m.group()) 24 m = re.findall('(\w+.txt)', download_text) 25 # print(m) 26 print('ファイルの作成:' + m[0]) 27 f = open(m[0], mode='w', encoding='utf-8') # with open(download_text, mode='w', encoding='shift-jis') as f: 28 f.write(text) 29 30 31 32def convert(download_text): 33 binarydata = open(download_text, 'rb').read() 34 text = binarydata.decode('shift_jis') 35 36 # ルビ、注釈などの除去 37 text = re.split(r'\-{5,}', text)[2] 38 text = re.split(r'底本:', text)[0] 39 text = re.sub(r'《.+?》', '', text) 40 text = re.sub(r'[#.+?]', '', text) 41 text = text.strip() 42 return text 43 44def download(url): 45 # データファイルをダウンロードする 46 zip_file = re.split(r'/', url)[-1] 47 if not os.path.exists(zip_file): 48 print('Download URL') 49 print('URL:',url) 50 urllib.request.urlretrieve(url, zip_file) 51 else: 52 print('Download File exists') 53 # フォルダの生成 54 dir, ext = os.path.splitext(zip_file) 55 if not os.path.exists(dir): 56 os.makedirs(dir) 57 # zipファイルの展開 58 zip_obj = zipfile.ZipFile(zip_file, 'r') 59 zip_obj.extractall(dir) 60 zip_obj.close() 61 # zipファイルの削除 62 os.remove(zip_file) 63 # テキストファイルの抽出 64 path = os.path.join(dir,'*.txt') 65 list = glob.glob(path) 66 # print(list) 67 return list[0] 68 69if __name__ == "__main__": 70 main() 71 72

補足情報(FW/ツールのバージョンなど)

・ブラウザはedgeで、jupyter notebookを使っています。
・以下のような指示が出ていますので共有させていただきます。

①Aozora.py を改めてダウンロードし、以下のように試してみてください。
python Aozora.py https://www.aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip
(Aozora.pyは上記のコードが書かれているファイルです。)

②以下のように表示され、実行したフォルダ(デレクトリ)に chumonno_oi_ryoriten.txt ができているはずです。このファイルは UTF-8です。
Download URL
URL: https://www.aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip
43754_ruby_17594/chumonno_oi_ryoriten.txt
ファイルの作成:chumonno_oi_ryoriten.txt

③ちなみに 43754_ruby_17594/chumonno_oi_ryoriten.txt は、青空文庫からダウンロードされたファイルを普通に解凍した場合に作成される Shif-JISのファイルです。

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

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

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

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

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

1T2R3M4

2021/05/22 12:17

ご自分で書いたコードなのにエラーの原因が思い当たらないのですか。 試したこと、調べたことを追記していただけませんか。
kaitoo

2021/05/22 13:13

ご返信ありがとうございます。このコードは配布されたものですので、私が作ったコードではありません。urlをmain関数の引数として入れたのですが結局何も変わりませんでした。私自身知識不足であまり多くのことは試せておりません。何か試すべき事柄などはありますでしょうか...
1T2R3M4

2021/05/22 13:43

プログラミングに関するナレッジサイトなので。 あと拾ったソフトを中身もわからずに実行するのはいかがなものかと思います。
guest

回答1

0

ベストアンサー

当方では正常に動作しました。

$ python aozora.py https://www.Aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip

(pyhonコードには誤りがありますが、通らないところです)

おそらく、kaitooさんは

python aozora.py -f https://www.Aozora.gr.jp/cards/000081/files/43754_ruby_17594.zip

と実行しているのでしょう。

Jupyterではなくシェルで実行してみれば正しく動くと思われます。

投稿2021/05/22 12:43

ppaul

総合スコア24666

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

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

kaitoo

2021/05/22 13:26

コマンドプロンプトで実行してみたところ正常に動作しました!コマンドプロンプトで実行していなかったのと、同じディレクトリにフォルダがなかったのが原因だったみたいです。迅速かつ的確な回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問