2

SPSS 構文ファイルを読み取り可能な HTML に変換しようとしています。(単一の) 印刷できない文字が HTML ファイルに挿入されることを除いて、ほぼ完全に機能しています。ASCII コードではないようで、小さな点のように見えます。そして、それはトラブルを引き起こしています。

HTML ファイルの 2 行目に (のみ) 発生し、常に元のファイルの 1 行目に対応します。おそらくPythonのどの行が問題を引き起こしているかを示唆しています(コメントを参照してください)

これを引き起こすと思われるコードは

    rfil = open(fil,"r") #rfil =  Read File, original syntax
    wfil = open(txtFil,"w") #wfil =  Write File, HTML output
    #Line below causes problem??
    wfil.write("<ol class='code'>\n<li>") 
    cnt = 0
    for line in rfil:
        if cnt == 0:
            #Line below causes problem??
            wfil.write(line.rstrip("\n").replace("'",'&#39;').replace('"','&#34;')) 
        elif len(line) > 1:
            wfil.write("</li>\n<li>" + line.strip("\n").replace("'",'&#39;').replace('"','&#34;'))
        else:
            wfil.write("<br /><br />")
        cnt += 1
    wfil.write("</li>\n</ol>")
    wfil.close()
    rfil.close()

結果のスクリーンショット

ここに画像の説明を入力

4

2 に答える 2

4

入力ファイルは、UTF-8 エンコーディングを示すバイト オーダー マーク (BOM)で始まっているようです。次のコマンドでファイルを開くと、ファイルを Unicode 文字列にデコードできます。

import codecs
rfil = codecs.open(fil, "r", "utf_8_sig")

utf_8_sig エンコーディングは、最初に BOM をスキップします。

BOM を認識するプログラムもあれば、認識しないプログラムもあります。BOM なしでファイルを書き出すには、次を使用します。

wfil = codecs.open(txtFil, "w", "utf_8")
于 2013-05-14T09:33:11.807 に答える
1

表示されるのは、バイト オーダー マーク、つまり BOMです。ご覧\xef\xbb\xbfのとおり、使用する文字列は実際には UTF-8 です。それらを適切な Unicode ( ) に変換してline.decode('utf-8')、操作を容易にすることができます。

次に、最初の行のロジックを拡張して、BOM を安全に削除できるようにします。

for raw_line in rfil:
    line = raw_line.decode('utf-8') # now line is Unicode
    if cnt == 0 and line[0] == '\ufeff':
        line = line[1:] # cut the first character, which is a BOM
    ...
于 2013-05-14T09:23:25.330 に答える