-2
私は非常に基本的なレベルのPythonを書くことができます。このpython 3コードをpython 2.7に変換するには?
import sys
inf = open (sys.argv[1], 'r')
ouf = open (sys.argv[2], 'w')
def summarize(data:list, crit:float, run:int)->list:
i = 0
s = []
while i < len(data):
j = i
while (j < len(data)) and (crit <= data[j]):
j += 1
if run <= j - i:
s.append('{}-{}'.format(i+1, j))
i = j+1
return s
def transfer(head:str, data:list, sink:open, crit:float, run:int)->None:
summary = summarize(data, crit, run)
if summary:
sink.write('{}: {}\n'.format(head, ', '.join(summary)))
def collect(source:open, sink:open, crit:float = 0.5, run:int = 1)->None:
data = head = []
for line in source:
L = line.strip()
if not L.startswith('#'):
data.append(float(L.split()[-1]))
else:
transfer(head, data, sink, crit, run)
data = []
head = L[1:].strip()
transfer(head, data, sink, crit, run)
collect(inf, ouf)
inf.close()
ouf.close()
(INPUT.TXTが)のようなファイルに変換:に
# IUPred
# Copyright (c) Zsuzsanna Dosztanyi, 2005
#
# Z. Dosztanyi, V. Csizmok, P. Tompa and I. Simon
# J. Mol. Biol. (2005) 347, 827-839.
#
#
# Prediction output
# NP_414578.2
1 M 0.4476
2 S 0.5286
3 E 0.7328
4 S 0.8019
5 L 0.2094
6 H 0.2503
7 L 0.1791
8 T 0.9193
# IUPred
# Copyright (c) Zsuzsanna Dosztanyi, 2005
#
# Z. Dosztanyi, V. Csizmok, P. Tompa and I. Simon
# J. Mol. Biol. (2005) 347, 827-839.
#
#
# Prediction output
# NP_418290.4
1 M 0.5328
2 E 0.8759
3 S 0.5323
4 W 0.1942
5 L 0.2575
6 I 0.8823
7 P 0.8034
8 A 0.2258
9 A 0.2541
10 P 0.8783
11 V 0.1002
12 T 0.3583
(私はこのPythonの3スクリプト(ARGV 1及び2はINPUT.TXTとoutput.txtとされている)が見つかりました。
NP_414578.2: 2-4, 8-8
NP_418290.4: 1-3, 6-7, 10-10
つまり、最後の列の値が> = 0.5である範囲(最初の列)がリストされます。
実際には、これはpython2で書かれた事前に公開されたpythonソフトウェアパッケージを使用して生成された自分のデータを解析するための理想的なサポートスクリプトになります。これらの既存のツールを追加するには、上記のスクリプトをpython2に変換する必要があります。
py3to2を使用しようとしましたが、別のスクリプトはありません。
私のpython 2.
に変換する方法を提案してください最終的には、この中に終わるyou..Iのすべてによって示唆されるように、あなたに
ここに野生のアイデアがあります:それをPython 2で実行し、それが動作するかどうかを確認してください。それはありませんか?お気に入りの検索エンジンを使用してソリューションをチェックし、自分で修正してみてください。うまくいかない?ここに問題を投稿してください。ヒント:Python 2と3がどのようにファイルを扱うかを詳しく見てみましょう。 –
メソッドのシグネチャの明示的な型を削除するだけです – RafaelC
次のエラーが表示されたらpy2.7で実行します:ファイル "script.py"、行5 def summarize(data:list、crit:float、run:int) - >リスト: ^ SyntaxError:無効な構文 –