2013-02-07 2 views
-3

list.txt라는 다른 파일의 내용을 기반으로 data.txt라는 파일에서 데이터를 추출하고 싶습니다. $ 1 및 list.txt $ 2가 data.txt에서 사용 가능한 경우 data.txt에서 $ 11을 추출해야합니다. list.txt $ 2와 data.txt $ 4는 동일합니다.텍스트 파일에서 열 추출

# Create a data dict using data.txt 
with open("data.txt") as f: 
    # create generator of entries using non-empty lines in file 
    entries = (line.split() for line in f if line.strip()) 
    # create dict using ($1,$4) as key and $11 as value 
    data = dict(((d[0], d[3]), d[10]) for d in entries) 

# for each entry in list.txt, print out matching data 
with open("list.txt") as f: 
    entries = (tuple(line.split()) for line in f if line.strip()) 
    for e in entries: 
    if e in data: 
     print e[0], e[1], data[e] 

것을 실행 : 나는 data.txt 있으리라 믿고있어

contents of list.txt 

2aas p0877 
asds k9876 
651a kl098 

contents of data.txt 

2aas F DNK_ECTHA Q9XT6 12-208 192.0 250.0 198.0 104.00 78.80 99.0 108.0 97 5 
asds G DNK_DROME k9876 12-209 192.0 250.0 197.0 100.00 78.80 87.0 100.0 97 6 
1ot3 H DNK_DROME Q9bt6 11-208 142.0 256.0 194.0 106.00 78.80 97.0 100.0 97 5 
651a H DNK_ECTHA kl098 10-208 192.0 259.0 197.0 100.00 78.80 98.0 100.0 99 5 
2aas H pyp_DROME p0877 12-208 192.0 250.0 130.0 102.00 78.80 67.0 103.0 97 9 

desired output 

2aas p0877 67.0 
asds k9876 87.0 
651a kl098 98.0 
+4

당신이 이미 시도했다 보여줄 경우 유용 할 것입니다. 그러면 우리는 좀 더 구체적인 조언을 제공 할 수 있으며 다른 사람들이 당신을 위해 당신의 일을하도록 요구하는 것처럼 보이지 않을 것입니다. –

+0

python + awk = noway – Denis

답변

1

은 여기에 신속하고 더러운 방법을 사용하여 파이썬의 "쿼리"list.txt

에서 항목을 사용하고자하는 데이터의 목록이 포함되어 있습니다 파일과 동일한 디렉토리에 다음과 같이 입력하십시오 :

[[email protected]]$ python extract.py 
2aas p0877 67.0 
asds k9876 87.0 
651a kl098 98.0 
솔루션

또는 :

[[email protected]]$ awk 'FILENAME==ARGV[1] {pair[$1" "$4] = $11; next} ($1" "$2 in pair) {printf("%s\t%s\t%s\n", $1, $2, pair[$1" "$2])}' data.txt list.txt 
2aas p0877 67.0 
asds k9876 87.0 
651a kl098 98.0 
관련 문제