1

これは、Python に関して私を悩ませてきた問題です。

ファイルから文字列を読み取ろうとしています。ファイルは .rc サフィックスで、ファイルごとに 1 種類のローカライズされた文字列が含まれています。さまざまな言語に基づいて、さまざまなコードページを使用してデコードしました。ここでは、例としてフランス語のファイルのみを取り上げ、そのコード ページは 1252 です。悲しいことに、二重引用符があるたびに、Python シェルで文字列を出力すると、予期せず 2 つの二重引用符が表示されます。

.rc ソース ファイルの行:

La fonction "Test de télécopie" verifie.

Python シェルの出力文字列:

La fonction ""Test de télécopie"" 検証.

私が行ったいくつかの活動:

f = open(filename,"r")         #Used to open .rc source file
for strline in f.readlines():  #Used to read file line by line
    print strline                #Used to print in Python shell

追加情報:

a. .rc ソース文字列の二重引用符で囲まれた 16 進コードは次のとおりです。

b. .rc ソース ファイルを Web ブラウザで開くと、2 つの二重引用符が予期せず表示されます。

c. .rc ソース ファイルは社外秘なので、ここには添付しませんでした。

d. OS: Enu Win7 x64\Python: v2.7

私はPythonの初心者です。どんなアイデアでも本当に感謝します。

よろしくお願いします、 ;)

4

2 に答える 2

2

すべての誤解は、私が .rc ファイル (これまで C++ を使用したことがない) に慣れていないことと、開発者が文字列をどのように処理するかということに起因しています。私の答えがとても未熟に見えても、私を殴らないでください。:)

関連する開発者と話し合った結果、文字列内の二重引用符を処理するために使用される .rc ファイルの作成者によって追加されたメカニズムであることが確認されました。

以下の文字列のように: GUI が期待する-お元気ですか、「マーク」?

.rc (または Web ブラウザー) で、"お元気ですか、""Mark"""?

.rc ファイルの作成者は、文字列内の元の文字列を囲むために二重引用符をもう 1 つ追加するこのメカニズムを追加します。これにより、文字列が呼び出されて GUI に表示されると、次のように認識されなくなります。 ?」==>"How are you," Mark "?" ==>これは、GUI が正しく表示できない厄介な二重引用符の一致になります。

そこで、必要なものを取得するために、この追加の二重引用符を削除するフィルターを追加しました。そして、Python ユーザーにとっては簡単だと思います。

専門的な回答ではありませんが、同じ問題に遭遇した人に別の方法で考えてもらいたいと思っています。

上記の問題を以前に特定するのを手伝ってくれたすべての人に本当に感謝しています。

于 2012-07-04T03:41:33.040 に答える
0

コンソールは 1252 以外の別のコード ページを使用しています。

編集:

#!/usr/bin/python
# -*- coding: utf-8 -*-

str=u"""La fonction "Test de télécopie" vérifie."""
print str
flat=str.encode("cp1252")
convts=unicode(flat, encoding="cp850") #Change the testing code page here.
print convts
于 2012-05-09T10:06:18.910 に答える