2014-07-24 8 views
-2

시작 I는 다음과 같이 탭으로 구분 된 txt 파일이 행을 찾을 수 :파이썬은 누구의 n 번째 열은 AAA

A B aaaKP 
C D bbbZ 

이 탭으로 구분됩니다.

phrase = aaa 
column = 3 

그때 내가 그 3 열 AAA

로 시작하는 행만을 원하는 경우 출력은

내가 시도 무엇
A B aaaKP 

은 매우 지루한 일, 나는 것 MatLab 만 시도했습니다.

매우 느린 if 및 for 문과 findstr을 사용하여 시도해 볼 수 있습니다.

MatLab을 사용하면 더 잘 찾을 수 없습니다. 내가 생각할 수있는

+4

좋습니다. 나는 파이썬을 Matlab보다 더 선호한다. 파이썬으로 시도한 것을 우리에게 보여주는 것은 어떨까요? – Gerrat

답변

1
phrase, column = 'aaa', 3 
fn = lambda l : len(l) >= column and len(l[column-1]) >= len(phrase) and phrase == l[column-1][:len(phrase)] 
fp = open('output.txt', 'w') 
fp.write(''.join(row for row in open('input.txt') if fn(row.split('\t')))) 
fp.close() 
+0

고마워요! 출력을 올바르게 인쇄합니다. 출력을 output.txt로 저장할 수 있습니까? – user3123767

+0

예, 물론입니다. 수정 된 코드를 사용해보십시오. – Corei13

+0

고맙습니다! 여러 구가 있다면 어떻게 될까요? 예를 들어 세 번째 열이 aaa 또는 bbb 또는 ccc 인 행을 가져 오려면 어떻게해야합니까? 나는 "phrase, column = { 'aaa', 'bbb', 'ccc'}, 3"을 시도했지만 작동하지 않았습니다. – user3123767

0

간단한 방법 : 당신이 이해 파이썬 슬라이싱을 도움이 필요한 경우

with open('tab-delimited.txt', 'r') as f: 
    for l in f: 
     if l.split('\t')[2][:3] == 'aaa': 
      print(l) 

this question를 참조하십시오.