107

Pythonコンソールで、次のように入力すると:

>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])

与える:

'I\nwould\nexpect\nmultiple\nlines'

私はそのような出力を見ることを期待していますが:

I
would
expect
multiple
lines

ここで何が欠けていますか?

4

6 に答える 6

96

コンソールは、文字列自体ではなく、表現を出力しています。

プレフィックスを付けるとprint、期待どおりの結果が得られます。

文字列と文字列の表現の違いの詳細については、この質問を参照してください。非常に単純化された表現は、その文字列を取得するためにソースコードに入力するものです。

于 2013-01-28T11:20:06.307 に答える
46

あなたは結果を忘れましprintた。得られるのは、実際の印刷結果ではなく、Pインです。RE(P)L

Py2.xでは、次のようになります。

>>> print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines

Py3.Xでは、printは関数なので、次のようにする必要があります。

print("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))

さて、それは短い答えでした。実際にはREPLであるPythonインタープリターは、実際に表示される出力ではなく、常に文字列の表現を表示します。表現はあなたがreprステートメントで得るものです

>>> print repr("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'I\nwould\nexpect\nmultiple\nlines'
于 2013-01-28T11:19:24.507 に答える
16

printその出力を取得する必要があります。
やったほうがいい

>>> x = "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
>>> x                   # this is the value, returned by the join() function
'I\nwould\nexpect\nmultiple\nlines'
>>> print x    # this prints your string (the type of output you want)
I
would
expect
multiple
lines
于 2013-01-28T11:52:53.177 に答える
6

あなたはそれを印刷する必要があります:

In [22]: "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Out[22]: 'I\nwould\nexpect\nmultiple\nlines'

In [23]: print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines
于 2013-01-28T11:19:23.693 に答える
4

これで印刷すると、次のprint 'I\nwould\nexpect\nmultiple\nlines'ようになります。

I
would
expect
multiple
lines

\n、END-OF-TEXTをマークするために特別に使用される改行文字です。行またはテキストの終わりを示します。この特性は、C、C++などの多くの言語で共有されています。

于 2013-01-28T11:20:25.557 に答える
0

repr()関数は、指定されたオブジェクトの印刷可能な表現を返し、PythonのevalStr()またはexecにとって重要です。たとえば、PythonのZenを取得したい場合:

eng.execString('from this import *');
println('import this:'+CRLF+
  stringReplace(eng.EvalStr('repr("".join([d.get(c,c) for c in s]))'),'\n',CRLF,[rfReplaceAll]));
于 2021-09-19T12:52:56.433 に答える