J'ai une liste, et j'essaie de déterminer le nombre de paires de caractères entier qu'il contient. Par exemple, 20W code> est une paire, tel quel
1R code> et
5k code>. J'ai essayé d'utiliser l'expression régulière
\ d + [a-z] code> et cela identifie les paires, mais comment puis-je les diviser étant donné que l'entier peut être n'importe quelle longueur et la chaîne est toujours une lettre.
Merci d'avance. P> p>
3 Réponses :
20W 1 ['20W'] 20W 1 ['20W'] 20W 1 ['20W'] 8W5K7W 3 ['8W', '5K', '7W'] 8W5K7W 3 ['8W', '5K', '7W'] 8W5K7W 3 ['8W', '5K', '7W'] 8W5K7W 3 ['8W', '5K', '7W'] 9W3K8W 3 ['9W', '3K', '8W'] 7W7R6W 3 ['7W', '7R', '6W'] 6W4R1Y4R5W 5 ['6W', '4R', '1Y', '4R', '5W'] 6W1R1W5R1W1R5W 7 ['6W', '1R', '1W', '5R', '1W', '1R', '5W'] 6W1R1W2R1Y2R1W1R5W 9 ['6W', '1R', '1W', '2R', '1Y', '2R', '1W', '1R', '5W'] 6W1R1W5R1W1R5W 7 ['6W', '1R', '1W', '5R', '1W', '1R', '5W'] 6W1R1W2R1Y2R1W1R5W 9 ['6W', '1R', '1W', '2R', '1Y', '2R', '1W', '1R', '5W'] 9W3B8W 3 ['9W', '3B', '8W'] 9W3B8W 3 ['9W', '3B', '8W'] 9W3B8W 3 ['9W', '3B', '8W'] 9W3B8W 3 ['9W', '3B', '8W'] 9W3B8W 3 ['9W', '3B', '8W'] 8W5N7W 3 ['8W', '5N', '7W']
Une autre doublure, mais sans groupe de fonctions et de boucles inutiles. Comme il s'agit toujours d'une lettre, ce que vous demandez vraiment est: "Combien de lettres y a-t-il?". Les chiffres ne comptent même pas à ce moment-là. La regex est également plus efficace et plus dynamique que la réponse similaire de @ronie. Si, pour une raison quelconque, les lettres sont également incluses minuscules, cela ne se cassera pas.
''' 76 pairs were found: 20W appears 3 times in positions [0, 1, 2] and is 3.95% of known values 8W appears 11 times in positions [3, 6, 9, 12, 17, 60, 63, 66, 69, 72, 73] and is 14.47% of known values 5K appears 4 times in positions [4, 7, 10, 13] and is 5.26% of known values 7W appears 6 times in positions [5, 8, 11, 14, 18, 75] and is 7.89% of known values 9W appears 6 times in positions [15, 58, 61, 64, 67, 70] and is 7.89% of known values 3K appears 1 times in positions [16] and is 1.32% of known values 7R appears 1 times in positions [19] and is 1.32% of known values 6W appears 6 times in positions [20, 21, 26, 33, 42, 49] and is 7.89% of known values 4R appears 2 times in positions [22, 24] and is 2.63% of known values 1Y appears 3 times in positions [23, 37, 53] and is 3.95% of known values 5W appears 5 times in positions [25, 32, 41, 48, 57] and is 6.58% of known values 1R appears 8 times in positions [27, 31, 34, 40, 43, 47, 50, 56] and is 10.53% of known values 1W appears 8 times in positions [28, 30, 35, 39, 44, 46, 51, 55] and is 10.53% of known values 5R appears 2 times in positions [29, 45] and is 2.63% of known values 2R appears 4 times in positions [36, 38, 52, 54] and is 5.26% of known values 3B appears 5 times in positions [59, 62, 65, 68, 71] and is 6.58% of known values 5N appears 1 times in positions [74] and is 1.32% of known values '''
Je pense que cela ajoutera 1 à cause de la lettre à la fin.
1-liner + Importation:
import re print(sum(len(re.findall("\\d+[A-Z]", i)) for i in x)) #76
Merci pour votre réponse, cela fonctionne bien, que fait le deuxième \ au début de la regex?
Une barre oblique inverse (\) est un caractère spécial qui, lorsque combiner avec le caractère suivant crée une autre. \ n code> est équivalent à une nouvelle ligne. \\ signifie qu'il s'agit d'une barre oblique inverse.
Double Backslash est inutile si vous utilisez des guillemets simples.
@MichaelGuidry Où avez-vous eu ça? Les citations simples et doubles sont les mêmes en python. Correction: "Double Backslash est inutile si vous utilisez uniquement des chaînes brutes".
Voici une sortie interprète: >>> "\\ a" == '\ a' faux code>
Eh bien, votre réponse est la seule qui utilisait des guillemets doubles et la seule qui utilisait la double barreaux au dos. C'était une hypothèse - peut-être un mauvais.
Quels sont vos résultats attendus?
Avez-vous envisagé d'utiliser
^ code> et
$ code> pour tester la chaîne complète à la fois
@ Praysonw.daniel J'aimerais obtenir le nombre total de paires en prenant la longueur de la liste des paires fendues.
@Chase Je suis tout à fait nouveau dans Regex, que font-ils?
Veuillez Modifier La question à inclure un exemple de la sortie attendue.