2012-11-05 2 views
2

를 사용하여 숫자의 그룹에서 연속 번호를 검색하는 방법은 아래와 같은 번호의 목록을 가지고 : 열이 연속 행에 대해 "1/1"입니다bash는 나 파이썬

1 0/1 
2 1/1 
3 1/1 
4 1/1 
5 1/1 
6 1/1 
7 0/1 
8 0/1 

경우에, 나는 것 2-6

간단한 bash 코드 나 필요하다면 파이썬을 어떻게 적용해야합니까?

많은 감사

+0

... 당신은 할 수 없습니다 – user815408

+0

에 대한 예를 들어, '1/1'의 첫 번째 발생의 색인을 찾고 *'* 1/1'이 아닐 때까지 검색을 몇 번해야하는지 계산하십시오. ??? – paddy

+0

은'0/1'이고'1/1'은 열 2의 유일한 값입니까? –

답변

2

당신이 파이썬에서 코드를 할 수있는 경우는 다음과 같은 방법으로 그것을 해결할 수 :

  1. 파일을 읽어보십시오.
  2. 두 번째가 1/1 인 경우에만 정규식을 사용하여 첫 번째 숫자가 포함 된 목록을 만듭니다.
  3. 목록을 범위로 그룹화하십시오. (hint)

그래서 코드는 다음과 같이 표시됩니다

import re 

# step 1 
with open('filename') as f: 
    data = f.read() 

# step 2 
list = re.findall(r'(\d+)\s+1/1', data) 

# step 3 
# Check the link in the description of the algorithm 
+0

많은 감사합니다! 잘 작동한다 – user815408

0

배쉬 솔루션 : 나는 완전히 같은 문제에 대한 생각이 없다

#! /bin/bash 
unset in         # Flag: are we inside an interval? 
unset last        # Remember the last position. 
while read p f ; do 
    if [[ $f = 1/1 && ! $in ]] ; then # Beginning of an interval. 
     echo -n $p- 
     in=1 
    elif [[ $f = 1/1 && $in ]] ; then # Inside of an interval. 
     last=$p 
    elif [[ $f != 1/1 && $in ]] ; then # End of an interval. 
     echo $last 
     unset in 
    fi 
done