diviser les éléments d'une liste en python

Je sais que c'est une question assez basique, mais je suis nouveau en python et je ne peux pas comprendre comment le résoudre.

J'ai une liste:

list = ['element1t0238.94', 'element2t2.3904', 'element3t0139847']

Et je veux supprimer le ' t ' et tout après. Je pensais diviser chaque élément au ' t ' afin que je puisse supprimer tous les autres éléments de la liste. Cependant, quand j'essaie de faire list[0:].split('t') je reçois AttributeError: l'objet' list 'n'a pas d'attribut 'split'. J'ai aussi essayé de faire toute la liste en une chaîne, mais cela a amené un tout autre tas de problème. Toutes les suggestions seraient appréciées.

54
demandé sur Ry- 2011-07-14 19:44:44

7 réponses

Quelque Chose comme:

>>> l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']
>>> [i.split('\t', 1)[0] for i in l]
['element1', 'element2', 'element3']
64
répondu Roman Bodnarchuk 2011-07-14 15:47:02
myList = [i.split('\t')[0] for i in myList] 
26
répondu dave 2011-07-14 15:46:12

Essayez de parcourir chaque élément de la liste, puis de le diviser au niveau du caractère de tabulation et de l'ajouter à une nouvelle liste.

for i in list:
    newList.append(i.split('\t')[0])
4
répondu caltangelo 2011-07-14 15:47:18

N'utilisez pas list comme nom de variable. Vous pouvez également jeter un oeil au code suivant:

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]

Ou édition sur place:

for i,x in enumerate(clist):
    if '\t' in x:
        clist[i] = x[:x.index('\t')]
4
répondu Artsiom Rudzenka 2011-07-14 15:49:22

J'ai dû diviser une liste pour l'extraction de fonctionnalités en deux parties 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
0
répondu Max Kleiner 2018-07-16 20:15:28

Convertissez simplement votre liste en chaîne par str(variable), puis utilisez la méthode split() cela fonctionnera

0
répondu Aamir 2018-09-25 07:57:23
sentences = ("The cat ate a big mouse. This was becasue the mouse was annoying him")

import re

liste = re.findall(r"[\w']+|[.,!?;]", sentences)

nodu = []
for x in liste:
if x not in nodu:
    nodu.append(x)
print(nodu)

pos = []
for word in liste:
if word in nodu:
    pos.append(nodu.index(word)+1)
print(pos)

lpos = []
for word in liste:
lpos.append(liste.index(word)+1)

nodus = (str(nodu))
file=open("t3.txt","w")
file.write(nodus)
file.write("\n")
file.write(str(pos))
file.close()



for number in lpos:
for word in liste:
    number = word
    print(number)
break   
-3
répondu codinggod56 2016-07-03 20:17:49