2

以下のような番号のリストがあります。

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 が連続する行の「1/1」である場合、位置の開始と終了を報告したいと思います。たとえば、ここでは次のようにする必要があります: 2-6

簡単なbashコード、または必要に応じてpythonを適用するにはどうすればよいですか?

どうもありがとう

4

2 に答える 2

2

Pythonでコーディングできる場合は、次の方法で解決できます。

  1. ファイルを読みます。
  2. 正規表現を使用して、2番目が。の場合にのみ最初の番号を含むリストを作成します1/1
  3. リストを範囲でグループ化します。(ヒント

したがって、コードは次のようになります。

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
于 2012-11-05T21:40:29.083 に答える
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
于 2012-11-05T22:01:44.533 に答える