2014-12-08 6 views
-2

나는이 버전의 다른 버전처럼 보이는 10k os 문자열의 목록을 가지고 있습니다. (HN5ML6A02FL4UI_3 [14 숫자 또는 letters_1-6] _1 ~ _6을 제외하고는 중복됩니다.처음 14자를 읽고, 고유 한 것을 기반으로하고, 중복을 파싱하는 파이썬 코드

나는 이것을 나열하고 중복 된 14 문자 (_1-_6 이전)를 제거하는 방법을 찾으려고합니다.

HN5ML6A02FL4UI_3

HN5ML6A02FL4UI_1

HN5ML6A01BDVDN_6

HN5ML6A01BDVDN_1

HN5ML6A02GVTSV_3

:리스트의 일부

예 내가 등록 표현식을 사용하여 스크립트의 버전을 시도

HN5ML6A01AJOJU_5

HN5ML6A02JI8VU_1

HN5ML6A02JPGQ9_5

HN5ML6A01CUDA2_5

HN5ML6A01CUDA2_1

: var n = /\d+/.exec(info)[0]; 내 앞의 질문에 게시 된 다음에. 나는이 스크립트를 사용하고 난 아직도 정확한 출력을 받고 있지 않다 최근에 How can I strip the first 14 characters in an list element using python?

: 및

은 또한에서 코드의 수정 된 버전을 사용했다.

import os, re 

def trunclist('rhodopsins_play', 'hope4'): 
    with open('rhodopsins_play','r') as f: 
     newlist=[] 
     trunclist=[] 
     for line in f: 
      if line.strip().split('_')[0] not in trunclist: 
       newlist.append(line) 
       trunclist.append(line.split('_')[0]) 
    print newlist, trunclist 

    # write newlist to file, with carriage returns 
    with open('hope4','w') as out: 
     for line in newlist: 
      out.write(line) 

내 inputfile.txt 는 중요한 부분이 문자는 위의 목록과 같은 데이터의 10K보다 다음의 파일을 출력의 '_'(밑줄)의 전면에 포함 고유 한 ABCD12356_1.

누군가 도움을 줄 수 있습니까?

도움 주셔서 감사합니다.

+0

에 일을 내가 원하는 것 출력 파일 HN5ML6A02FL4UI_3 HN5ML6A01BDVDN_6 HN5ML6A02GVTSV_3 HN5ML6A01CUDA2_1 HN5ML6A02JPGQ9_5 HN5ML6A02JI8VU_1 HN5ML6A01AJOJU_5에 슬릿 팅된다 – hdliv

답변

0

위의 것과 유사한이 스크립트를 가져오고 실행하십시오. 그것은 '_'이것은 예를 들어 파일

def trunclist(inputfile, outputfile): 
with open(inputfile,'r') as f: 
    newlist=[] 
    trunclist=[] 
    for line in f: 
     if line.strip().split('_')[0] not in trunclist: 
      newlist.append(line) 
      trunclist.append(line.split('_')[0]) 
print newlist, trunclist 

# write newlist to file, with carriage returns 
with open(outputfile,'w') as out: 
    for line in newlist: 
     out.write(line)