web-dev-qa-db-ja.com

Pythonが改行やスペースを追加しないようにするにはどうすればいいですか?

Pythonでは、私が言うなら

print 'h'

文字hと改行を受け取ります。私が言うなら

print 'h',

私はhという文字を受け取り、改行はしません。私が言うなら

print 'h',
print 'm',

文字h、スペース、文字mを受け取ります。 Pythonがスペースを印刷しないようにするにはどうすればよいですか?

Print文は同じループの異なる繰り返しなので、+演算子を使うことはできません。

223
Bart

あなたが使用することができます:

sys.stdout.write('h')
sys.stdout.write('m')
191
Greg Hewgill

ただのコメントです。 Python では、あなたが使うでしょう

print('h', end='')

エンドラインターミネータを抑制する

print('a', 'b', 'c', sep='')

項目間の空白区切り文字を抑制します。

271

グレッグは正しいです - あなたはsys.stdout.writeを使うことができます

おそらく、しかし、あなたは、<whatevers>のリストを蓄積するためにあなたのアルゴリズムをリファクタリングし、そしてそれから検討するべきです。

lst = ['h', 'm']
print  "".join(lst)
43
Dan

あるいは+を使ってください。

>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls

すべてが連結可能なオブジェクトであることを確認してください。

27
pablo
Python 2.5.2 (r252:60911, Sep 27 2008, 07:03:14)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print "hello",; print "there"
hello there
>>> print "hello",; sys.stdout.softspace=False; print "there"
hellothere

しかし、本当に、あなたはsys.stdout.writeを直接使うべきです。

20
tzot

完全を期すために、もう1つの方法は、書き込みを実行した後にソフトスペース値を消去することです。

import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"

helloworld !を印刷します

ただし、stdout.write()を使用すると、ほとんどの場合はおそらくもっと便利です。

16
Brian

これは愚かに見えるかもしれませんが、最も簡単なようです:

    print 'h',
    print '\bm'
13
Abd

コンソールの制御を取り戻してください。単に:

from __past__ import printf

__past__.pyには以下が含まれます。

import sys
def printf(fmt, *varargs):
    sys.stdout.write(fmt % varargs)

その後:

>>> printf("Hello, world!\n")
Hello, world!
>>> printf("%d %d %d\n", 0, 1, 42)
0 1 42
>>> printf('a'); printf('b'); printf('c'); printf('\n')
abc
>>>

追加のボーナス:もしあなたがprint >> f, ...が気に入らなければ、このケイパーをfprintf(f、...)に拡張することができます。

9
John Machin

私は新しい答えを追加していません。私はただ最良の答えをもっと良いフォーマットで入れているところです。評価による最良の答えはsys.stdout.write(someString)を使うことです。あなたはこれを試すことができます:

    import sys
    Print = sys.stdout.write
    Print("Hello")
    Print("World")

得られます:

HelloWorld

それがすべてです。

8
joker

Python 2.6では:

>>> print 'h','m','h'
h m h
>>> from __future__ import print_function
>>> print('h',end='')
h>>> print('h',end='');print('m',end='');print('h',end='')
hmh>>>
>>> print('h','m','h',sep='');
hmh
>>>

そのため、__future__のprint_functionを使用して、print関数のsepおよびendパラメータを明示的に設定できます。

5
Benjamin

Cのprintf関数のようにprintを使うことができます。

例えば.

"%s%s"%(x、y)を表示

2
techdude101

sys.stdout.writeは(Python 2では)唯一の堅牢なソリューションです。 Python 2の印刷はめちゃくちゃです。このコードを見てください:

print "a",
print "b",

これはa bを表示するので、それは末尾のスペースを印刷しているのではないかと疑うようになります。しかし、これは正しくありません。代わりにこれを試してください:

print "a",
sys.stdout.write("0")
print "b",

これはa0bを印刷します。それをどう説明しますか。 スペースはどこに消えましたか?

私はまだここで実際に何が起こっているのか、まったくわかりません。誰かが私の最も良い推測を見てもらえますか:

あなたのprintの末尾に,があるときにルールを推論しようとする試み:

まず、(Python 2では)print ,が空白文字(空白も改行も表示しない)を仮定しましょう。

しかし、Python 2はあなたがどのように印刷しているかに注意を払います - あなたはprintsys.stdout.write、または他の何かを使っていますか? 2つの連続した呼び出しをprintにすると、Pythonはその2つの間にスペースを入れることを要求します。

1
Aaron McDaid
print("{0}{1}{2}".format(a, b, c))
1
Michael Murphy
print('''first line \
second line''')

それは作り出します

1行目2行目

0
ahmed khattab
import sys
a=raw_input()
for i in range(0,len(a)):
       sys.stdout.write(a[i])
0
Mrinal