2013-05-17 2 views
0

Я пытаюсь исправить значения в поле таблицы доступа. Значения выглядят как этотСплит и удаление значений в поле, Python

G45-f1 
C43-m1 
C6-h1 
M90_N9-h1 
K9_Y7-h2 

Я хочу отрезать от всего, перед тире «-» и удалить все остальное, чтобы выглядеть следующим образом:

G45 
C43 
C6 
M90_N9 
K9_Y7 

Я знаю, что могу разделить значения на dash x.split("-"), но я не уверен, как удалить остаток. Любые предложения приветствуются.

ответ

2

str.split() всегда возвращает список, по крайней мере, один элемент, просто выберите первый элемент результата игнорировать остальные:

x.split('-')[0] 

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

x.split('-', 1)[0] 
+0

Индексирование. правильно. Я должен был это понять. На жесткой временной шкале. Спасибо за быстрый ответ :) – Mike

0

Вы можете создать новый список

newlist = [x.split('-')[0] for x in oldlist] 
1

Вы можете использовать str.split, но вы также можете использовать str.partition, которые только раскалывает на первый и вхождение всегда гарантированно возвращает 3-кортеж ... (голову, разделителем, хвост):

>>> print 'M90_N9-h1'.partition('-')[0] 
M90_N9 

Это имеет то преимущество, что если вы хотите хвоста, то даже если разделитель нет, это будет пустая строка, а не IndexError исключения через str.split.