如何拆分列表的元素?


84

我有一个清单:

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

我如何删除\t和之后的所有内容以获得此结果:

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

Answers:


110

就像是:

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

我几乎明白这一点。split做的论点中的1是什么?与我假设的相同,是括号后的索引0。这是通过使用i的zeroeth元素创建一个新列表吗?那么1是否只是另一个拆分,可以按照OP的要求有效地除去字符串的其余部分?
Malik A. Rumi

2
由于列表包含字符串,因此变量i是字符串。所以i.split('\ t',1)调用字符串的split()方法。根据文档,此方法的第一个参数是要分割的字符串,第二个参数是要执行的最大分割数。该方法返回执行拆分后得到的字符串列表,因此“ [0]”返回结果列表中的第一个拆分字符串。
jcl

2
当我为自己的代码尝试此操作时,它返回一个错误,即“ list”对象没有属性“ split”。我对如何解决这个问题感到困惑。
keitereth24年

1
@ keitereth24,罗马分割的字符串列表。您可能有列表清单
AAI


9

尝试遍历列表的每个元素,然后在制表符处将其拆分,然后将其添加到新列表中。

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

5
这行得通,但是列表理解是实现此目的的更好方法
dave

6

不要将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')]

2

我不得不将特征提取列表分为两部分: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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.