목록의 요소를 분할하는 방법은 무엇입니까?


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은 무엇입니까? 내가 괄호 뒤에 인덱스 0이라고 가정하는 것과 동일합니다. 이것은 내가 무엇이 었는지 0eth 요소를 사용하여 새로운 목록을 만드는 것입니까? 그렇다면 1은 OP가 원하는대로 나머지 문자열을 효과적으로 제거하는 또 다른 분할입니까?
Malik A. Rumi

2
목록에 문자열이 포함되어 있으므로 변수 i는 문자열입니다. 따라서 i.split ( '\ t', 1)은 문자열의 split () 메서드를 호출합니다. 당 문서 ,이 방법의 제 파라미터에 의해 분할 할 문자열이고, 두 번째 수행 분할의 최대 수이다. 이 메서드는 분할을 수행 한 결과 인 문자열 목록을 반환하므로 "[0]"은 결과 목록의 첫 번째 분할 문자열을 반환합니다.
jcl

2
내 코드에 대해 이것을 시도했을 때 'list'개체에 'split'속성이 없다는 오류가 반환되었습니다. 이 문제를 해결하는 방법에 대해 혼란 스럽습니다.
keitereth24

1
@ keitereth24, 로마자 분할 문자열 목록. 목록이있을 수 있습니다
AAI AAI


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

기능 추출 목록을 두 부분 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.