1

インターネットからダウンロードしたモジュール(pypi)であるpythonとXMLBuilderを使用しています。文字列のように機能するオブジェクトを返します (print(x) を実行できます) が、file.write(x) を使用するとクラッシュし、XMLBuilder モジュールでエラーがスローされます。

返されるオブジェクトを文字列に変換する方法を知りたいのですが?

ファイルに正しく書き込んでいることを確認しました。

たとえば、 x = y を既に試しましたが、思ったように、ポインターを作成するだけで、x=x+" "まだエラーが発生します。また、"\n" を含むオブジェクトのような文字列を返します。

この問題に関するヘルプは大歓迎です。

4

4 に答える 4

1

ライブラリは次のように__str__定義しています。

def __str__(self):
    return tostring(~self, self.__document()['encoding'])

したがって、次を使用するだけですstr(x)

file.write(str(x))
于 2013-06-16T17:56:26.443 に答える
1
file.write(str(x))

おそらくあなたのために働くでしょう。

背景情報: ほとんどの型には、関数__str__または__repr__(または両方) が定義されています。このような型のオブジェクトを に渡すと、 をprint渡さなかったことを認識しstr、オブジェクトを文字列に変換するためにこれらの関数のいずれかを呼び出そうとします。

ただし、すべての関数がそれほどスマートprintというわけではなく、文字列以外のものを渡すと失敗します。また、文字列の連結は混合型では機能しません。これらの関数を使用するには、非文字列型のオブジェクトを手動で変換する必要がありますstr()。たとえば、次のようになります。

x = str(x)+" "

これにより、新しい文字列が作成xされ、以前にオブジェクトを保持していた変数に割り当てられます (そのオブジェクトは失われます!)。

于 2013-06-16T17:53:23.753 に答える
0

あなたが書くとき:

print myObject

__repr__メソッドは実際に呼び出されます。

たとえば、そのオブジェクトの文字列表現を変数x += myXMLObject.__repr__()に追加する場合。x

于 2013-06-16T17:55:17.623 に答える
0

あなたの質問が何であるかはよくわかりませんが、すべての引数をprint自動的に呼び出しstrます...したがってprint、ファイルに入れるのと同じ出力が必要な場合myfile.write(str(whatever))は、同じテキストをmyfile入れprint (x)ますファイル(printがそこに入れる末尾の改行を差し引いたもの)。

于 2013-06-16T17:53:38.317 に答える