Как извлечь строку для списка, который содержит целое число? - PullRequest
2 голосов
/ 18 апреля 2019

Я хочу извлечь строку из моего списка.Это мой список.

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

Это то, что я пробовал: оператор if находится внутри цикла for для итерации по списку.

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

Вывод:

Розыгрыш для львов 3 и змей 3

Желаемый результат:

Розыгрыш львов и змей

без целых чисел

Ответы [ 4 ]

1 голос
/ 18 апреля 2019

Вы можете использовать

import re

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

, конечно, вам нужно адаптировать это к вашему циклу для извлечения желаемой строки

0 голосов
/ 18 апреля 2019

Прыгая к некоторым выводам:

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 голосов
/ 18 апреля 2019

Разделение будет захватывать все цифры, а не только последние, и поможет вам справиться с высокими показателями, такими как 11, 12 .... Разделение справа помогает работать с командами из нескольких слов, такими как «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))

Полоска удаляет завершающие или начальные пробелы.

0 голосов
/ 18 апреля 2019

Это то, что вы можете попробовать.

>>> 
>>> 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']]
>>> 

Наконец, это то, что вы можете попытаться получить о / п.

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