0

Python 3.0 でコードを記述して、データ ファイルを 1 行ずつ再フォーマットしようとしています。コードは各行を読み取り、その行をリストに変換してから、リストの各要素を読み取ります。次に、各リスト要素が変更され、出力ファイルにコピーされます。

問題は、一部の要素にバックスラッシュ文字が含まれていることです。これは、Python がコマンドとして解釈するか、不可解に無視します。リストの要素を生またはリテラル文字列として読み取りおよび/または抽出する方法は Python にありますか?

私のコードは以下の通りです:

import shlex
import sys
import fileinput
import string
inputFile = list(open("inputfile.txt","r"))
outputFile = open("outputFile.txt","a")

for i in range(1,len(inputFile)):
    print(inputFile[i])
    line = shlex.shlex(inputFile[i], posix = True)
    line.whitespace = "\t"
    line.whitespace_split = True
    line = list(line)
    for j in range(0,3):
        cell = line[j]
        cell_1 = cell.replace("\\","\\\\")
        outputFile .write(("%s\t")%(cell_1))
    for k in range(4,len(line)):
        cell = str(line[k])
        cell_1 = cell.replace(" | ","\t")
        if cell_1 == "-":
            outputFile .write("-\t-\t")
        if cell_1 == "unknown":
            outputFile .write("unknown\t-\t")
        else:
            outputFile .write(("%s\t")%(cell_1))

入力の例: GA10034 7421353 7424287 FBgn0070093 Dpse\GA10034 proteolysis | InterPro:IPR007484 による電子注釈から推測 - - - - 不明 - - - ペプチダーゼ活性 | InterPro:IPR007484 による電子注釈から推測 - - - - - -

出力行の例は次のとおりです。 InterPro:IPR007484 - - - - - - - - - -

出力では、Dpse と GA10034 の間の \ が削除されます。

(スクリプトはまた、出力の 2 行目から始まる各新しい行の先頭にタブ文字を追加します。入力ファイルの約 3/4 で「終了引用符がない」と主張して失敗するという不可解な結果です。 "; しかし、一度に 1 つの問題に対処するのが最善だと思いました)

4

1 に答える 1