BeautifulSoupを使用してHTMLからテキストを抽出していますが、それを画面(またはファイル)に適切に印刷する方法がわかりません。
テキストを含むクラスは次のようになります。
class Thread(object):
def __init__(self, title, author, date, content = u""):
self.title = title
self.author = author
self.date = date
self.content = content
self.replies = []
def __unicode__(self):
s = u""
for k, v in self.__dict__.items():
s += u"%s = %s " % (k, v)
return s
def __repr__(self):
return repr(unicode(self))
__str__ = __repr__
Thread
のインスタンスを印刷しようとすると、コンソールに次のように表示されます。
~/python-tests $ python test.py
u'date = 21:01 03/02/11 content = author = \u05d3"\u05e8 \u05d9\u05d5\u05e0\u05d9 \u05e1\u05d8\u05d0\u05e0\u05e6\'\u05e1\u05e7\u05d5 replies = [] title = \u05de\u05d1\u05e0\u05d4 \u05d4\u05de\u05d1\u05d7\u05df '
どんなことを試しても、希望する出力を取得できません(上記のテキストはヘブライ語である必要があります)。私の最終目標は、Thread
をファイルにシリアル化し(jsonまたはpickleを使用)、それを読み戻すことができるようにすることです。
Ubuntu 10.10でPython 2.6.6を使用してこれを実行しています。
Unicode文字列をファイル(またはコンソール)に出力するには、テキストエンコーディングを選択する必要があります。 PythonデフォルトのテキストエンコーディングはASCIIですが、ヘブライ語の文字をサポートするには、UTF-8などの別のエンコーディングを使用する必要があります。
s = unicode(your_object).encode('utf8')
f.write(s)
@markの答えに代わる良い方法は、環境変数PYTHONIOENCODING=UTF-8
。
c.f。 Pythonでsys.stdoutを介してUnicode文字列を記述する 。
(Pythonスクリプト内ではない)を開始する前に必ず設定してください。)