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).