2011-07-14 391 views
46

我知道这是一个非常基本的问题,但我是python的新手,无法弄清楚如何解决它。python列表中的拆分元素

我有一个列表:

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

,我想之后删除 '\ t' 和一切。我正在考虑将'\ t'中的每个元素分开,以便我可以删除列表中的每一个其他元素。但是,当我试着做list[0:].split('\t')时,我得到了AttributeError:'list'对象没有属性'split'。我也尝试将整个列表变成一个字符串,但这带来了其他一系列问题。任何建议,将不胜感激。

+6

解释为什么你的代码没有工作(不喜欢唯一的代码解答初学者):'list [0:]'返回一个列表,所以你不能在'str'中使用'split',一个函数。感谢您的解释,您必须遍历每个元素并单独拆分它,或者使用for或[list comprehensions](http://docs.python.org/tutorial/datastructures.html#list-comprehensions) – Jacob

+0

。非常感激。 – user808545

+0

今天我了解到,总有一种更简单的方法来做我想要的python – espais

回答

52

喜欢的东西:

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

我几乎明白这一点。分裂做法的论点是什么?相同的,我认为是索引0后parens。这是通过使用曾经是我的zeroeth元素创建一个新的列表吗?那么是另一个分裂,是否有效地摆脱了OP的其他部分? –

+0

由于列表包含字符串,因此变量i是一个字符串。所以i.split('\ t',1)调用字符串的split()方法。根据[documentation](https://docs.python.org/2/library/stdtypes.html#str.split),此方法的第一个参数是要分割的字符串,第二个参数是分割的最大数目去表演。该方法返回执行拆分后得到的字符串列表,因此“[0]”返回结果列表中的第一个拆分字符串。 – jcl

+1

当我为自己的代码尝试这个时,它返回一个错误,即'list'对象没有'split'属性。我很困惑如何解决这个问题。 – keitereth24

25
myList = [i.split('\t')[0] for i in myList] 
3

尝试通过列表中的每个元素进行迭代,然后在制表符分割它,将它添加到一个新的列表。

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

这可行,但列表解析是一个更好的方法来做到这一点 – dave

+0

我不熟悉这种方法,谢谢你的提示。 – caltangelo

4

不要使用list作为变量名。 你可以看看下面的代码太:

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] 

或就地编辑:

for i,x in enumerate(clist): 
    if '\t' in x: 
     clist[i] = x[:x.index('\t')] 
-3
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