Je souhaite utiliser la chaîne correspondant au remplacement de l'expression régulière Python pour le remplacement. Je l'oublie à chaque fois, alors prends note
Supposons que vous ayez une liste comme celle-ci dans l'analyse anglaise.
Liste avec des mots anglais
sentence = ['During', 'this', 'time', ',', 'many', 'chatterbots', 'were', 'written', 'including',
'PARRY', ',', 'Racter', ',', 'and', 'Jabberwacky', '.']
Lorsque vous voulez en faire une chaîne de caractères (de la phrase entière), la première chose à laquelle vous pouvez penser est la jointure.
Essayez de joindre avec un délimiteur d'espace demi-largeur
' '.join(sentence)
#During this time , many chatterbots were written including PARRY , Racter , and Jabberwacky .
Oui ... Comme vous l'avez peut-être deviné, il y a un espace demi-largeur ** devant le .
ou,
.
J'étais en difficulté
Alors que faire ... C'est vrai. Remplacez par une expression régulière!
Mais comment le remplacer par ,
ou .
?
Faisons-le pour le moment.
Corrigez-le comme du texte anglais
import re
bad = ' '.join(sentence)
fixed = re.sub(r' ([,.])', r'\1', bad)
# r' [,.]' :Espace demi-largeur+「,」「.N'importe quel
print(fixed)
production
During this time, many chatterbots were written including PARRY, Racter, and Jabberwacky.
Achevée!
Lors de l'utilisation de re.sub Dans la chaîne de caractères de modèle du premier argument, placez la partie que vous souhaitez réutiliser dans () Spécifiez le nombre () que vous souhaitez utiliser pour la partie que vous souhaitez remplacer la chaîne de caractères du deuxième argument, ": \ 1 si c'est le premier". Sur cette base, j'écrirai quelques exemples.
check.py
bad = 'including PARRY , Racter , and Jabberwacky .'
#Celui du plus tôt
re.sub(r' ([,.])', r'\1', bad)
Out[4]: 'including PARRY, Racter, and Jabberwacky.'
# 「(L'emplacement est différent
re.sub(r'( [,.])', r'\1', bad)
Out[5]: 'including PARRY , Racter , and Jabberwacky .' # == bad
# 「()Essayez de fermer l'espace avec
re.sub(r'( )([,.])', r'\1', bad)
Out[6]: 'including PARRY Racter and Jabberwacky '
#Changer le numéro à utiliser
re.sub(r'( )([,.])', r'\2', bad)
Out[7]: 'including PARRY, Racter, and Jabberwacky.'
#Essayez de vous connecter et d'utiliser
re.sub(r'( )([,.])', r'\1\2', bad)
Out[8]: 'including PARRY , Racter , and Jabberwacky .' # == bad
#Et le contraire
re.sub(r'( )([,.])', r'\2\1', bad)
Out[9]: 'including PARRY, Racter, and Jabberwacky. ' # != bad
#Essayez de jouer
re.sub(r'( )([,.])', r'\1 Hoge\2', bad)
Out[12]: 'dont PARRY Hoge,Racter Hoge,et Jabberwacky Hoge.'
Assurez-vous de préfixer `` \ num' avec
r. <sup> <a href="#%E8%BF%BD%E8%A8%9820170119"> Remarques supplémentaires </a> <sup /> Bon exemple
r '\ 1' Mauvais exemple
'\ 1'`
Si vous ajoutez une barre oblique inverse \
, cela fonctionnera sans le r
.
*** Merci à shiracamus de nous l'avoir fait savoir dans les commentaires. *** ***
Dans le cas de '\ num'
, il est nécessaire d'ajouter r
, mais si c'est
\ num', il n'est pas nécessaire d'ajouter
r`.
r signifie raw (raw = raw, raw) et est une chaîne brute (brute) qui ne traite pas les backslashes comme des caractères d'échappement.
>>> import re
>>> bad = 'including PARRY , Racter , and Jabberwacky .'
>>> re.sub(' ([,.])', '\\1', bad)
'including PARRY, Racter, and Jabberwacky.'
Si vous avez d'autres questions, veuillez nous le faire savoir dans les commentaires.
Recommended Posts