J'oublie souvent, mais le Document officiel contient trop de texte et il est difficile de le vérifier à chaque fois, c'est donc un mémorandum. ,. Nous prévoyons d'en ajouter d'autres au besoin.
import re
A propos, notez que from sympy import *
se traduira par une fonction re
qui renvoie la partie réelle.
Pour retirer la partie correspondante ...
filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'([\w\.-]+?)\.(\w+)$', filename)
print(m.group(0)) #Tout le match(m.group()Équivalent à?)
print(m.group(1)) #1er groupe
print(m.group(2)) #Deuxième groupe
print(m.groups()) #Tapez sur tout le groupe
out
Back_in_the_U.S.S.R.m4a
Back_in_the_U.S.S.R
m4a
('Back_in_the_U.S.S.R', 'm4a')
Nommez le groupe avec (? P <groupname>)
et accédez à partir du mot-clé.
filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'(?P<basename>[\w\.]+?)\.(?P<ext>\w+)$', filename)
print(m.group('basename')) #(?P<basename> )Chaîne qui correspond
print(m.group('ext')) #(?P<ext> )Chaîne qui correspond
print(m.groupdict()) #Groupes nommés dans le dictionnaire
out
Back_in_the_U.S.S.R
m4a
{'basename': 'Back_in_the_U.S.S.R', 'ext': 'm4a'}
Par exemple, pour remplacer \ ruby {méthode de retour} {kibyuho}
dans $ \ LaTeX $ par<ruby> méthode de dévotion <rt> kibyuho </ rt> </ ruby>
...
print(re.sub(r'\\ruby\{(\w+)\}\{(\w+)\}',
r'<ruby>\1<rt>\2</rt></ruby>',
r'\ruby{apocalypse}{Kibuho}'))
out
<ruby>apocalypse<rt>Kibuho</rt></ruby>
Utilisez un groupe nommé avec (? P <groupname>)
Lors du référencement, utilisez\ g <groupname>
.
print(re.sub(r'\\ruby\{(?P<rb>\w+)\}\{(?P<rt>\w+)\}',
r'<ruby>\g<rb><rt>\g<rt></rt></ruby>',
r'\ruby{apocalypse}{Kibuho}'))
out
<ruby>apocalypse<rt>Kibuho</rt></ruby>
C'est déroutant avec la balise html, mais j'ai obtenu le même résultat.
Pour récupérer tout le contenu de l'élément HTML ʻemou de l'élément
strong` ...
src = r'<em>Théorème de choix</em>En supposant, dans n'importe quel ensemble<strong>Vous pouvez passer la commande</strong>.'
re.findall(r'<(em|strong)>(.*?)</\1>', src)
out
[('em', 'Théorème de choix'), ('strong', 'Vous pouvez passer la commande')]
Comment changer en quelque sorte cm en m dans le texte ...
def cm2m(m): #Préparer une fonction qui prend un objet de correspondance comme argument
value = m.group(1)
return str(float(value)/100) + 'm'
print(re.sub(r'(\d+)cm', cm2m, '271cm +314 cm est 585 cm.'))
out
2.71m + 3.14m est 5.C'est 85m.
Je me demande si lambda est bon pour un traitement simple qui ne nécessite pas la définition d'une fonction.
print(re.sub(r'(\d+)cm', lambda m: str(float(m.group(1))/100) + 'm', '271cm +314 cm est 585 cm.'))
out
2.71m + 3.14m est 5.C'est 85m.
Utilisez la récurrence. Cependant, comme c'est une fonction que le standard «re» n'a pas, utilisez «regex». S'il n'est pas installé, utilisez pip install regex
etc. Ce qui suit correspond au \ frac {} {}
de $ \ LaTeX $ (peut-être).
import regex
pattern_frac = r'\\frac(?<rec>\{(?:[^{}]+|(?&rec))*\}){2}'
m = regex.search(pattern_frac, r'1 + \frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}')
print(m.group())
out
\frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}
Recommended Posts