import re
import zipfile
import urllib.request
import os.path
import glob
re: Abréviation pour Regular Expression, un module pour manipuler les expressions régulièreszipfile: Module de manipulation des fichiers zipglob: Module pour obtenir le nom du chemin du fichierIci, le matériel est "Galaxy Railroad Night" de Kenji Miyazawa.
URL = 'https://www.aozora.gr.jp/cards/000081/files/43737_ruby_19028.zip'
def download(URL):
zip_file = re.split(r'/', URL)[-1] #➀
urllib.request.urlretrieve(URL, zip_file) #➁
dir = os.path.splitext(zip_file)[0] #➂
with zipfile.ZipFile(zip_file) as zip_object: #➃
zip_object.extractall(dir) #➄
os.remove(zip_file) #➅
path = os.path.join(dir,'*.txt') #➆
list = glob.glob(path) #➇
return list[0] #➈
** 1) Téléchargez le fichier zip **
re.split (): Séparez la chaîne d'URL par/et obtenez le nom du fichier zip" 43737_ruby_19028.zip "à la fin.: Divisez le nom du fichier zip par un point". "Et obtenez le nom du fichier dir` sans extension.** 2) Décompressez et enregistrez le fichier zip **
zipfile.ZipFile (): Lisez le fichier zip précédemment enregistré, créez un objet zip et: Extraire tout le contenu de l'objet zip dans le répertoire dir`.** 3) Obtenez le chemin du fichier enregistré **
: Génère la chaîne de chemin de dir`.glob.glob (): Affiche et répertorie tous les noms de fichiers texte dans le répertoire.list [0]: Renvoie le chemin du premier fichier de la liste.def convert(download_text):
data = open(download_text, 'rb').read() #➀
text = data.decode('shift_jis') #➁
#Extraction de texte
text = re.split(r'\-{5,}', text)[2] #➂
text = re.split(r'Livre du bas:', text)[0] #➃
text = re.split(r'[#Nouvelle page]', text)[0] #➄
#Suppression du bruit
text = re.sub(r'《.+?》', '', text) #➅
text = re.sub(r'[#.+?]', '', text) #➆
text = re.sub(r'|', '', text) #➇
text = re.sub(r'\r\n', '', text) #➈
text = re.sub(r'\u3000', '', text) #➉
return text
** 1) Lire le fichier **
: Lit le fichier en 'rb'` (mode binaire).decode ('shift_jis'): Décode selon shift_jis et récupère le texte.** 2) Extraire le texte avec re.split () **
(r '\ - {5,}', text) [2]: Supprimez la partie où le trait d'union" - "est répété 5 fois ou plus, et utilisez-le comme délimiteur pour diviser le troisième élément. Sortir.(r'base: ', text) [0]: Supprimez "base:" et retirez le premier élément divisé en l'utilisant comme délimiteur.(r '[# page break]', text) [0]: Supprime" [# page break] "et extrait le premier élément de la division en l'utilisant comme délimiteur.** 3) Suppression (remplacement) du bruit par re.sub () **
'《. +?》': 《Rubi》'[#. +?]': [Remarque] '\ r \ n': code de saut de ligne '\ u3000': Espace pleine largeurdownload_file = download(URL)
text = convert(download_file)
print(text)

!apt install aptitude
!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y
!pip install mecab-python3==0.7
MeCab.Tagger () avec l'argument -Owakati puis en appelant la méthode parse ().import MeCab
mecab = MeCab.Tagger("-Owakati")
text = mecab.parse(text)
print(text)

split () divise la chaîne en utilisant un espace comme délimiteur.separated_text = text.split()
print(separated_text)

with open('output.txt', 'w') as f:
f.write(text)
text dans un fichier appelé'output.txt'. L'argument «'w» est la spécification du mode d'écriture.from google.colab import files
files.download('output.txt')
files est un module pour télécharger ou télécharger des fichiers entre Colaboratory et votre PC local.
Recommended Posts