Jak podzielić elementy listy?


85

Mam listę:

my_list = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']

Jak mogę usunąć \ti wszystko później, aby uzyskać ten wynik:

['element1', 'element2', 'element3']

Odpowiedzi:


113

Coś jak:

>>> l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']
>>> [i.split('\t', 1)[0] for i in l]
['element1', 'element2', 'element3']

Prawie to rozumiem. Co robi 1 w argumencie do podziału? To samo, co zakładam, to indeks 0 po parach. Czy to jest tworzenie nowej listy przy użyciu elementu zeroeth tego, co było i? Czy zatem 1 jest tylko kolejnym splitem, skutecznie pozbywającym się reszty łańcucha tak, jak chciał OP?
Malik A. Rumi

2
Ponieważ lista zawiera ciągi, zmienna i jest łańcuchem. Więc i.split ('\ t', 1) wywołuje metodę split () łańcuchów. Zgodnie z dokumentacją , pierwszym parametrem tej metody jest ciąg do podziału, a drugim jest maksymalna liczba podziałów do wykonania. Metoda zwraca listę ciągów będących wynikiem wykonania podziału, więc „[0]” zwraca pierwszy łańcuch podziału na liście wyników.
jcl

2
Kiedy próbowałem tego dla mojego własnego kodu, zwróciłem błąd, że obiekt „lista” nie ma atrybutu „podział”. Nie wiem, jak to obejść.
keitereth24

1
@ keitereth24, rzymska lista podzielonych ciągów. Możesz mieć listę
AAI


9

Spróbuj przejść przez każdy element listy, a następnie podziel go na znak tabulacji i dodaj do nowej listy.

for i in list:
    newList.append(i.split('\t')[0])

5
To działa, ale listy ze składaniem są o wiele lepszym sposobem na zrobienie tego
dave,

6

Nie używaj listy jako nazwy zmiennej. Możesz również spojrzeć na poniższy kod:

clist = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847', 'element5']
clist = [x[:x.index('\t')] if '\t' in x else x for x in clist]

Lub edycja lokalna:

for i,x in enumerate(clist):
    if '\t' in x:
        clist[i] = x[:x.index('\t')]

2

Musiałem podzielić listę do wyodrębnienia cech na dwie części lt, lc:

ltexts = ((df4.ix[0:,[3,7]]).values).tolist()
random.shuffle(ltexts)

featsets = [(act_features((lt)),lc) 
              for lc, lt in ltexts]

def act_features(atext):
  features = {}
  for word in nltk.word_tokenize(atext):
     features['cont({})'.format(word.lower())]=True
  return features
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.