2
votes

comment extraire une chaîne pour une liste contenant un entier?

Je souhaite extraire la chaîne de ma liste. Voici ma liste.

if items[0][-1] == items[1][-1]:
    print('Draw for {} & {}'.format(items[0][:4], items[1][1:]))

Voici ce que j'ai essayé: L'instruction if est à l'intérieur d'une boucle for pour parcourir la liste.

[['Lions 3', ' Snakes 3'], ['Tarantulas 1', ' FC Awesome 0'],
 ['Lions 1', ' FC Awesome 1'], ['Tarantulas 3', ' Snakes 1'],
 ['Lions 4', ' Grouches 0']]

Sortie:

Tirage au sort pour Lions 3 et Snakes 3

Résultat souhaité:

Tirage au sort pour les lions et les serpents

sans les entiers


2 commentaires

Le -1 est d'imprimer le dernier élément de cette liste comme 3: 3 mais je veux imprimer la chaîne sans l'entier


Vous pouvez remplacer 'items [0] [: 4]' par 'items [0] [: 4] [: - 1]' pour omettre l'entier (en supposant qu'il s'agit toujours et uniquement du dernier caractère de la chaîne).


4 Réponses :


0
votes

Voici ce que vous pouvez essayer.

>>> for item in output:
...     print('Draw for {} & {}'.format(item[0], item[1]))
... 
Draw for Lions & Snakes
Draw for Tarantulas & FC
Draw for Lions & FC
Draw for Tarantulas & Snakes
Draw for Lions & Grouches
>>> 

Enfin, voici ce que vous pouvez essayer pour obtenir votre o / p.

>>> 
>>> items = [['Lions 3', ' Snakes 3'], ['Tarantulas 1', ' FC Awesome 0'], ['Lions 1', ' FC Awesome 1'], ['Tarantulas 3', ' Snakes 1'], ['Lions 4', ' Grouches 0']]
>>> 
>>> output = [[s.split()[0] for s in item] for item in items]
>>> output
[['Lions', 'Snakes'], ['Tarantulas', 'FC'], ['Lions', 'FC'], ['Tarantulas', 'Snakes'], ['Lions', 'Grouches']]
>>> 

p>


2 commentaires

Maintenant, je dois attribuer à l'équipe gagnante 3 points et dessiner 1: 1 puis perdre 0


Merci à tous pour votre aide, je l'apprécie beaucoup



1
votes

Vous pouvez utiliser

import re

reg_exp = re.compile(r"[A-Za-z]+")
my_string = "String 3"
reg_exp.search(my_string).group(0) // outputs 'String'

bien sûr, vous devez l'adapter à votre boucle pour extraire la chaîne souhaitée


3 commentaires

il ne parviendrait pas à traiter "FC Awesome 4"


Oui, vous avez raison, peut-être que r "[A-Za-z] +" serait un modèle plus précis


oui, c'est mieux, vous voudrez peut-être supprimer les espaces de fin ou précédents



0
votes

Le fractionnement saisirait tous les chiffres, pas seulement les derniers et vous aiderait à gérer des scores élevés tels que 11, 12 .... La séparation à droite permet de gérer les équipes de plusieurs mots comme «FC Awesome».

for left, right in lst:
    lteam, lscore = left.strip().rsplit(' ', 1)
    rteam, rscore = right.strip().rsplit(' ', 1) 

    if lscore == rscore:
         print('Draw for {} & {}'.format(lteam, rteam))

La suppression supprime les espaces de fin ou initiaux.


1 commentaires

C'est beaucoup plus simple et plus compréhensible pour moi car je suis nouveau dans le codage



0
votes

Sauter à quelques conclusions:

matches = [['Lions 3', 'Snakes 3'], 
           ['Tarantulas 1', 'FC Awesome 0'],
           ['Lions 1', 'FC Awesome 1'], 
           ['Tarantulas 3', 'Snakes 1'],
           ['Lions 4', 'Grouches 0']]

def split_team_and_score(team_and_score):
    team, _, raw_score = team_and_score.rpartition(" ") 
    return team, int(raw_score)

for team_and_score_1, team_and_score_2 in matches:
    team1, score1 = split_team_and_score(team_and_score_1)
    team2, score2 = split_team_and_score(team_and_score_2)
    if score1 == score2:
        print('Draw for {} & {}'.format(team1, team2))


0 commentaires