Exemple :
Réponses
Trop de publicités?Il y a une bibliothèque d’inflexion dans l’index de paquet qui peut gérer ces choses pour vous. Dans ce cas, vous regarderait `` :
Je ne sais pas pourquoi ils sont tous tellement compliquer.
pour la plupart des cas, la simple expression ([A-Z]+)
fera l'affaire
>>> re.sub('([A-Z]+)', r'_\1','CamelCase').lower()
'_camel_case'
>>> re.sub('([A-Z]+)', r'_\1','camelCase').lower()
'camel_case'
>>> re.sub('([A-Z]+)', r'_\1','camel2Case2').lower()
'camel2_case2'
>>> re.sub('([A-Z]+)', r'_\1','camelCamelCase').lower()
'camel_camel_case'
>>> re.sub('([A-Z]+)', r'_\1','getHTTPResponseCode').lower()
'get_httpresponse_code'
D'ignorer le premier personnage ajoutez simplement regarder derrière (?!^)
>>> re.sub('(?!^)([A-Z]+)', r'_\1','CamelCase').lower()
'camel_case'
>>> re.sub('(?!^)([A-Z]+)', r'_\1','CamelCamelCase').lower()
'camel_camel_case'
>>> re.sub('(?!^)([A-Z]+)', r'_\1','Camel2Camel2Case').lower()
'camel2_camel2_case'
>>> re.sub('(?!^)([A-Z]+)', r'_\1','getHTTPResponseCode').lower()
'get_httpresponse_code'
Si vous souhaitez séparer ALLCaps à all_caps et attendre les chiffres de votre chaîne vous n'avez toujours pas besoin de faire deux pistes séparées suffit d'utiliser |
Cette expression ((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))
peut gérer à peu près chaque scénario dans le livre
>>> a = re.compile('((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))')
>>> a.sub(r'_\1', 'getHTTPResponseCode').lower()
'get_http_response_code'
>>> a.sub(r'_\1', 'get2HTTPResponseCode').lower()
'get2_http_response_code'
>>> a.sub(r'_\1', 'get2HTTPResponse123Code').lower()
'get2_http_response123_code'
>>> a.sub(r'_\1', 'HTTPResponseCode').lower()
'http_response_code'
>>> a.sub(r'_\1', 'HTTPResponseCodeXYZ').lower()
'http_response_code_xyz'
Tout dépend de ce que vous voulez pour l'utilisation de la solution qui correspond le mieux à vos besoins car il ne devrait pas être trop compliqué.
nJoy!
Je ne reçois pas idée pourquoi en utilisant les deux .sub() appelle ? :) Je ne suis pas gourou regex, mais j’ai simplifié la fonction de celui-ci, qui convient à mes besoins de certains, j’ai juste besoin d’une solution pour convertir camelCasedVars de requête POST à vars_with_underscore :
Il ne fonctionne pas avec des noms comme getHTTPResponse, cause j’ai entendu c’est mauvais, convention de nommage (devrait être comme getHttpResponse, c’est de toute évidence, qu’il a beaucoup plus facilement mémoriser ce formulaire).