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