Python-改行で参加する


88

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

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

与える:

'I\nwould\nexpect\nmultiple\nlines'

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

I
would
expect
multiple
lines

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

回答:


88

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

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

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


41

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

Py2.xでは、次のようにする必要があります

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

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

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'

13

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

4

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

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

4

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

I
would
expect
multiple
lines

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.