前提
夏目漱石「三四郎」が書かれたテキストファイル("sanshiro.txt")の内容から、余分な部分を取り除いて表示したいと思います。
参考したネット情報ではzipファイルを解凍させ、即座にテキストファイルを読み込んでいます。
同じように実施すると修正時に何回もファイルの解凍をおこなうことになるので、
解凍部分を分離させてテキストファイルの読み込みが行えるようにしました。
ですが、下記のように元のコードでは余分な部分が取り除けましたが、
変更したコードではできなくなりました。
何か有効な手法はございますでしょうか?
ご教授の程、お願いいたします。
該当コード
変更後
txtf = open("sanshiro.txt") contents = txtf.read() print(type(contents)) # => <class 'str'> print(contents) # ファイル整形 import re # ヘッダ部分の除去 txtf = re.split('\-{5,}',contents)[2] # フッタ部分の除去 txtf = re.split('底本:',contents)[0] # | の除去 txtf = contents.replace('|', '') # ルビの削除 txtf = re.sub('《.+?》', '', contents) # 入力注の削除 txtf = re.sub('[#.+?]', '',contents) # 空行の削除 txtf = re.sub('\n\n', '\n',contents) txtf = re.sub('\r', '',contents) # 整形結果確認 # 頭の100文字の表示 print(contents[:100]) # 見やすくするため、空行 print() print() # 後ろの100文字の表示 print(contents[-100:])
三四郎
夏目漱石
【テキスト中に現れる記号について】
《》:ルビ
(例)頓狂《とんき
青空文庫作成ファイル:
このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
元のコード
url = 'https://www.aozora.gr.jp/cards/000148/files/794_ruby_4237.zip' zip = '794_ruby_4237.zip' import urllib.request #URL によってリソースを取得し、それを一時的な場所に保存 urllib.request.urlretrieve(url, zip) # ダウンロードしたzipの解凍 import zipfile with zipfile.ZipFile(zip, 'r') as myzip: myzip.extractall() # 解凍後のファイルからデータ読み込み for myfile in myzip.infolist(): # 解凍後ファイル名取得 filename = myfile.filename # ファイルオープン時にencodingを指定してsjisの変換をする with open(filename, encoding='sjis') as file: text = file.read() # ファイル整形 import re # ヘッダ部分の除去 text = re.split('\-{5,}',text)[2] # フッタ部分の除去 text = re.split('底本:',text)[0] # | の除去 text = text.replace('|', '') # ルビの削除 text = re.sub('《.+?》', '', text) # 入力注の削除 text = re.sub('[#.+?]', '',text) # 空行の削除 text = re.sub('\n\n', '\n', text) text = re.sub('\r', '', text) # 整形結果確認 # 頭の100文字の表示 print(text[:100]) # 見やすくするため、空行 print() print() # 後ろの100文字の表示 print(text[-100:])
一
うとうととして目がさめると女はいつのまにか、隣のじいさんと話を始めている。このじいさんはたしかに前の前の駅から乗ったいなか者である。発車まぎわに頓狂な声を出して駆け込んで来て、いきなり肌をぬい
評に取りかかる。与次郎だけが三四郎のそばへ来た。
「どうだ森の女は」
「森の女という題が悪い」
「じゃ、なんとすればよいんだ」
三四郎はなんとも答えなかった。ただ口の中で迷羊、迷羊と繰り返した。
やってみたこと
変更後は、元のコードから入手したテキストファイル("sanshiro.txt")の読み込みから始めました。
元と変更後の両者とも、頭と後ろの100文字のみ出力するようにしています。
頭と後ろの100文字は2行空けて表示しています。
元コードは余分な部分を取り除いた上で結果を表示させています。
補足事項
windows10
python3.7.4
参考:https://qiita.com/makaishi2/items/63b7986f6da93dc55edd
回答1件
あなたの回答
tips
プレビュー