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 つの問題に対処するのが最善だと思いました)