Нарезать на «» пространство в питоне

1

Если L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]

Как отрезать L, чтобы получить все до первого пространства

['abc,'foo','bar']
  • 1
    Я люблю эти скоростные кодировки Python. Они ясно показывают, насколько быстро на практике происходит кодирование в Python. ;)
  • 0
    Конечно, если это всегда три первых символа, вы можете использовать [i[0][0:3] for i in L] .
Теги:
slice

5 ответов

5
Лучший ответ
In [1]: L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]

In [2]: [x[0].split(' ')[0] for x in L]
Out[2]: ['abc', 'foo', 'bar']
2
L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
print [x[0].split()[0] for x in L]
1
for i in range(len(L)):
    s = L[i][0]
    s = s.split(' ')[0]
    L[i] = s
  • 2
    Ewwww. Изучи список понимания, чувак!
  • 3
    @ulidtko Мех, я дал ответ так, как я бы прибегнул к этому, но это не значит, что он должен быть принят или одобрен
0

Я нахожу, что понимание списков иногда труднее читать, я бы предпочел сохранить отдельный цикл и извлечение:

def extract(element):
    """Extracts the string until the first space of the first element of a list
    >>> extract(['abc 1234',2])
    'abc'
    """
    return element[0].split()[0]

чтобы вы могли выполнить некоторые тесты для отдельных элементов:

extract(L[2])
'bar'

а затем применить это со списком или использовать карту [применяет функцию к каждому элементу списка]:

map(extract,L)
['abc', 'foo', 'bar']
0

В тех случаях, когда вы присутствуете, пробелы всегда встречаются в одном и том же положении. Если вы знаете, что это будет так, вы можете сделать что-то вроде:

L = [['abc 1234',2], ['foo 1',2] , ['bar 12312434',2]]
L2 = [x[0][0:3] for x in L]
print L2

Вывод:

['abc', 'foo', 'bar']

Конечно, если пробелы могут встречаться в разных положениях, вам лучше использовать одно из решений, используя str.split().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню