2017-02-16 4 views
0

でフォーマットするHTMLにシーケンスをインポート:私は、テキストファイルから1〜999文字の間の配列をインポートしようとして使用しているのpython

input_file.open(textfile.txt) 
sequence = input_file.read() 
inputfile_close() 

私は、その後で書くために新しいHTMLファイルを開きます。

私は現在使用している

output_file.write(-formatting-) 

::私は、HTMLを使用して新しいファイルに書き込まれた書式き

output_file.open(new.html, 'w') 

if character == 'A' or character == 'G' or character == 'I' or character == 'L' or character == 'P' or character == 'V' : 
     output_file.write ('<font style="background-color:white;">' + character + '</font>')  
    if character == 'F' or character == 'Y' or character == 'W' : 
     output_file.write ('<font style="background-color:green;">' + character + '</font>') # now we put the text we've read from the text file in 
    if character == 'D' or character == 'E' : 
     output_file.write ('<font style="background-color:orange;">' + character + '</font>') # now we put the text we've read from the text file in 
    if character == 'H' or character == 'K' or character == 'R' : 
     output_file.write ('<font style="background-color:red;">' + character + '</font>') # now we put the text we've read from the text file in 
    if character == 'S' or character == 'T' : 
     output_file.write ('<font style="background-color:purple;">' + character + '</font>') # now we put the text we've read from the text file in 
    if character == 'C' or character== 'M' : 
     output_file.write ('<font style="background-color:yellow;">' + character + '</font>') # now we put the text we've read from the text file in 
    if character == 'N' or character == 'Q' : 
     output_file.write ('<font style="background-color:blue;">' + character + '</font>') # now we put the text we've read from the text file in 

にはそれぞれの文字が色分けされています。

私の問題は、シーケンスが10番目の文字の後にスペースを、60番目の文字の後に改行が必要だということです。 シーケンスと番号の両方を固定幅にする必要があります。

ご意見をいただければ幸いです。

さらに詳しい情報が必要な場合は、お尋ねください。

コーディングhereで画像を作成しました。 添付のコーディングは私が現在使っているコーディングです。

は、私はあなたが sequenceを読み、 forループ内でHTMLを書く推測

+0

プロのヒントは、それらの長い 'if'のケースをカットするためのものです:' A '、' G '、' I '、L'、 'P'、 'V'読むのがずっと楽になります。私はまたあなたの変更された文字をすべてリストに入れ、 'formatted_characters [0:10] + ' ''のようなブロックを抽出し、60番目の文字の通常のカウンターを作成してブレークを挿入します。 – Torxed

+0

@Torxedカウンターの例を教えてもらえますか? リストに入れて抽出するのはなぜ有益でしょうか? –

+0

Jacob、あなたは 'output_file.write(...) 'でファイルに直接書き込むのではなく、結果を' result =' '.join(formatted_characters) 'に保存して' for i in in範囲(0、len(結果)、60):output_file.write(結果[i:i + 60] + '
') 'またはそれに類するもの。 – Torxed

答えて

1

ありがとうございますか!書式設定されたシーケンスを文字列に書き込み、続いて文字列全体をhtmlに書き出します。

モジュロ演算子%を使用すると、スペース/改行を追加できます。

formatted_seq = "" 
count = 0 
for character in sequence: 
    if character in 'AGILPV': 
     bg = "white" 
    elif character in 'FYW': 
     bg = "green" 
    elif character in 'DE': 
     bg = "orange" 
    elif character in 'HKB': 
     bg = "red" 
    elif character in 'ST': 
     bg = "purple" 
    elif character in 'CM': 
     bg = "yellow" 
    elif character in 'NQ': 
     bg = "blue" 

    formatted_seq += '<font style="background-color:' + bg + ';">' + character + '</font>' 

    count += 1 
    if count%60 == 0: 
     formatted_seq += '<br>' 
    elif count%10 == 0: 
     formatted_seq += '&nbsp;' 
+0

私はこれを使用しようとしましたが、私はそれを正しくやっているのか分かりません。私は私のバージョンの代わりにこの部分を使用しようとしました: \t文字の(シーケンス): \t \t( 'A'、 'G'、 'I'、 'L'、 'P'、 ' V '): \t \t \t output_file。( '')\t \t \tこれは正しい場所ですか? –

+0

@JacobSørensenそうですね。ですから 'formatted_seq + ='を 'output_file.write()'に置き換えて、出力ファイルに直接書き込んでいる変数に文字列を集めるのではなく、しかし私の考えは、コードを読みやすくするためにコードを少しきれいにすることでした。 – elcombato

+0

こんにちは、私はまだあなたのコーディングをうまくいく上でいくつかの問題を抱えています、私は何か間違っていますか?私は写真[ここ](http://imgur.com/a/WjwQS)を持っています。 output_file.write()の代わりにformatted_seq + =を使用する方法が分かりません。シーケンスを別のものとして保存する必要がありますか? –

関連する問題