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

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

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

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

Python

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

Q&A

解決済

1回答

415閲覧

Pythonで機械学習を行う際の文章の前処理

Unwise

総合スコア5

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2022/09/14 09:07

編集2022/09/14 09:11

前提

Python及びプログラム初心者です。自分なりに調べても解決法が分からず質問させていただきました。よろしくお願い致します。
https://serenard.hatenablog.com/entry/2019/04/07/164337
このサイトを参考に青空文庫のgitのレポジトリをクローンしたものから文書をダウンロードし、その文書をクレンジングしたものを改めて別ファイルに保存という作業を行っていたのですが、最後の保存の途中でエラーが起きました。

実現したいこと

  • ▲▲エラーを直し保存したい

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

D:\aozorabunko>python henkan.py saved ./novels/岡本かの子/愚なる(?!)母の散文詩 Traceback (most recent call last): File "D:\aozorabunko\henkan.py", line 42, in <module> save_novel('./novels/' + novel_author.string + '/' + novel_title.string, novel_content.text) File "D:\aozorabunko\henkan.py", line 13, in save_novel with open(file_path, 'w') as f: OSError: [Errno 22] Invalid argument: './novels/岡本かの子/愚なる(?!)母の散文詩'

該当のソースコード

Python

1from bs4 import BeautifulSoup as bs 2import numpy as np 3 4import re, sys, os 5 6def make_dir(dir_name): 7 if not os.path.exists(dir_name): 8 os.mkdir(dir_name) 9 10def save_novel(file_path, text): 11 if not os.path.exists(file_path): 12 print('saved', file_path) 13 with open(file_path, 'w') as f: 14 f.write(text) 15 16if __name__ == '__main__': 17 pass 18 19 cards = os.listdir('./cards') 20 21 for card in cards: 22 if card.isdecimal() and os.path.exists('./cards/' + card + '/files'): 23 novels = os.listdir('./cards/' + card + '/files') 24 for novel in novels: 25 26 if novel[-4:] == 'html': 27 with open('./cards/' + card + '/files/' + novel, 'r') as f: 28 novel_page_html = f.read() 29 novel_parsed = bs(novel_page_html, 'html.parser') 30 try: 31 for rt in novel_parsed('rt'): 32 rt.decompose() 33 for rp in novel_parsed('rp'): 34 rp.decompose() 35 except AttributeError as err: 36 print(err) 37 novel_title = novel_parsed.find('h1', class_='title') 38 novel_author = novel_parsed.find('h2', class_='author') 39 novel_content = novel_parsed.find('div', class_='main_text') 40 if novel_author is not None and novel_author.string is not None: 41 make_dir('./novels/' + novel_author.string) 42 save_novel('./novels/' + novel_author.string + '/' + novel_title.string, novel_content.text)

試したこと

保存する作品のタイトルの?や!の文字が問題なのかと思いましたが調べてもいまいちコードのどの部分に手を加えてよいのか分からず何もできておりません。

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

Python3.9

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

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

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

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

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

guest

回答1

0

ベストアンサー

Windows OS の場合ですと、幾つかの文字はファイル名に含めることができません。

Naming Files, Paths, and Namespaces - Win32 apps | Microsoft Docs

Naming Conventions

Use any character in the current code page for a name, including Unicode characters and characters in the extended character set (128–255), except for the following:

The following reserved characters:

  • < (less than)
  • > (greater than)
  • : (colon)
  • " (double quote)
  • / (forward slash)
  • \ (backslash)
  • | (vertical bar or pipe)
  • ? (question mark)
  • * (asterisk)

投稿2022/09/14 09:46

melian

総合スコア19771

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

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

Unwise

2022/09/14 10:32

助かりました、ありがとうございます。可能であれば重ねて質問失礼します。この作品のみを除くか保存の際にクエスチョンマークを全角で保存できるようにするかが対処法として頭にあるのですが、後者の場合「保存の際にクエスチョンマークだけ全角で」という条件を付けるのは難しいでしょうか?
melian

2022/09/14 10:45

例えば、 novel_author.string.replace('?', '?') などとします。novel_title や novel_content も同様です。
Unwise

2022/09/14 11:15

ありがとうございます!無事解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問