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
4 Réponses :
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>
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
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
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
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.
C'est beaucoup plus simple et plus compréhensible pour moi car je suis nouveau dans le codage
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))
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).