リストの要素を分割する方法は?


84

私はリストを持っています:

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

\tこの結果を得るために、その後すべてを削除するにはどうすればよいですか?

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

回答:


110

何かのようなもの:

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

私はこれをほとんど理解しています。分割するための議論の中の1は何ですか?私が仮定しているのと同じことは、parensの後のインデックス0です。これは、私がいたもののゼロ番目の要素を使用して新しいリストを作成していますか?それでは、1は別の分割であり、OPが望んでいたように文字列の残りの部分を効果的に取り除きますか?
マリクA.ルミ

2
リストには文字列が含まれているため、変数iは文字列です。したがって、i.split( '\ t'、1)は文字列のsplit()メソッドを呼び出します。ドキュメントによると、このメソッドの最初のパラメーターは分割する文字列であり、2番目のパラメーターは実行する分割の最大数です。このメソッドは、分割を実行した結果の文字列のリストを返すため、「[0]」は結果リストの最初の分割文字列を返します。
jcl 2017年

2
自分のコードでこれを試したところ、「list」オブジェクトに属性「split」がないというエラーが返されました。私はこれを回避する方法について混乱しています。
keitereth24 2017

1
@ keitereth24、文字列のローマ分割リスト。あなたはリストのリストを持っているかもしれません
AAI 2018


9

リストの各要素を繰り返し処理してから、タブ文字で分割して新しいリストに追加してみてください。

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

5
この作品が、リストの内包表記は、これを行うためのより良い方法です
デイブ・

6

リストを変数名として使用しないでください。次のコードも確認できます。

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

特徴抽出のためにリストを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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.