Lors de l'application d'une expression régulière à un fichier HTML en Python Je l'ai utilisé dans l'encodage et à d'autres endroits, je vais donc le laisser comme mémo.
Utilisez la bibliothèque de codecs. Parce que c'est une bibliothèque Python standard(Appx. 1), Il ne peut être utilisé que par importation sans installation.
import codecs f = codecs.open("hoge.html","r", encoding="utf-8")
### Mise en garde
- Assurez-vous de spécifier l'argument ```encoding``` pour la fonction codecs.open.
- Sous l'environnement Windows, il semble que vous ne puissiez rien lire d'autre que les fichiers spécifiés comme Shift-JIS. Il y avait un prédécesseur lorsque je soutenais (App x. 2).
## II. Appliquer des expressions régulières
#### **`Utilisons la bibliothèque re. C'est aussi une bibliothèque standard(Appx. 1)Il ne peut donc être utilisé que par importation.`**
``` 1)Il ne peut donc être utilisé que par importation.
import re str = f.read() regex = '[abc]' sample = re.findall(regex, str)
### Mise en garde
- Assurez-vous d'utiliser la fonction `` `` codecs.read () '' avant de passer le fichier html lu dans le chapitre précédent à chaque fonction de `` re```.
### Expression régulière typique
Ce qui suit est une liste de fonctions qui semblent être très polyvalentes en tant que fonctions de `` re '' de Appx.3. On suppose que `` `` regex``` contient une expression régulière.
- Recherche avant: `` `` re.search (regex, chaîne) `` ``
- Vérifie si le modèle regex est dans une chaîne et renvoie la chaîne (= regex) si elle existe
- Si la recherche échoue, None est renvoyé, donc vous pouvez facilement l'utiliser pour le branchement conditionnel avec, par exemple, ```if pas re.search (regex, string): `` `.
--Rechercher tout: `` re.findall (regex, chaîne) `` ``
- Vérifie si le modèle regex est dans la chaîne et renvoie une liste contenant toutes les correspondances
--Si vous souhaitez effectuer un autre processus re à partir de cette fonction, utilisez la fonction str (pour en faire une chaîne de caractères) pour en faire une chaîne de caractères (App x. 4).
--Replacement: `` `` re.sub (regex, replace, string, count = 0) `` ``
--Vérifiez si le modèle regex est dans la chaîne et remplacez-le par replace
--Si vous entrez un nombre naturel de 1 ou plus dans count, vous pouvez spécifier combien de fois remplacer la partie regex correspondante depuis le début de la chaîne. Si la valeur par défaut est 0, remplacez toutes les pièces
――Je me demandais, "Comment exprimez-vous la recherche globale (` `/ g```) en Python lors de l'écriture d'expressions régulières en JavaScript etc.?", Mais apparemment, cet état count = 0 Il semble être exprimé par (App x. 5)
L'expression régulière elle-même est détaillée dans App x.6.
(c'est tout)
## Référence (Annexe / Appx.)
―― 1. [Bibliothèque standard Python](https://docs.python.org/ja/3/library/index.html)
―― 2. [Une histoire de difficultés à ouvrir un fichier autre que CP932 (Shift-JIS) encodé sous Windows](https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e)
--3 [re --- Opération d'expression régulière](https://docs.python.org/ja/3/library/re.html)
- 4. [re.sub erroring with “Expected string or bytes-like object”](https://stackoverflow.com/questions/43727583/re-sub-erroring-with-expected-string-or-bytes-like-object)
- 5. [Python RegExp global flag
](https://stackoverflow.com/questions/11686516/python-regexp-global-flag)
--6 [Liste des expressions régulières de base](https://murashun.jp/blog/20190215-01.html)
――Je l'utilise toujours pour rechercher des expressions régulières.
Recommended Posts