Python印刷で改行やスペースが追加されないようにするにはどうすればよいですか? [複製]

StackOverflow https://stackoverflow.com/questions/255147

質問

    

この質問にはすでに回答があります:

         

Pythonで、私が言うなら

print 'h'

文字hと改行を取得します。私が言うなら

print 'h',

文字hを取得しますが、改行はありません。私が言うなら

print 'h',
print 'm',

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

printステートメントは同じループの異なる反復であるため、+演算子を使用することはできません。

役に立ちましたか?

解決

次を使用できます:

sys.stdout.write('h')
sys.stdout.write('m')

他のヒント

コメントのみ。 Python 3 では、使用します

print('h', end='')

エンドラインターミネータを抑制する、および

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

アイテム間の空白区切りを抑制します。

グレッグは正しい-sys.stdout.writeを使用できます

ただし、おそらく、アルゴリズムをリファクタリングして<!> lt; whatevers <!> gt;のリストを蓄積することを検討する必要があります。そして

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

または+を使用、つまり:

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

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

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を直接使用する必要があります。

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

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

印刷helloworld !

ほとんどの場合、stdout.write()を使用する方がおそらく便利です。

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

    print 'h',
    print '\bm'

コンソールの制御を取り戻します!単純:

from __past__ import printf

where __past__.pyに含まれるもの:

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

then:

>>> 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、...)に拡張できます。

新しい回答を追加していません。マークされた最良の回答をより良い形式で配置しているだけです。 評価によるベストアンサーはsys.stdout.write(someString)を使用していることがわかります。これを試すことができます:

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

次のようになります:

HelloWorld

これですべてです。

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を使用すると、印刷機能の sep および end パラメーターを明示的に設定できます。

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

e.g。

print <!> quot;%s%s <!> quot; %(x、y)

print("{0}{1}{2}".format(a, b, c))

sys.stdout.writeは(Python 2では)唯一の堅牢なソリューションです。 Python 2の印刷は非常識です。次のコードを検討してください:

print "a",
print "b",

これはa bを出力し、後続のスペースを出力しているのではないかと疑います。しかし、これは正しくありません。代わりにこれを試してください:

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

これはa0bを出力します。それをどう説明しますか? スペースがなくなった場所

ここで実際に何が起こっているのか、まだよくわかりません。誰かが私の最高の推測を見渡すことができます:

, に末尾のprintがある場合にルールを推測する私の試み:

最初に、print ,(Python 2の場合)は空白(スペース nor 改行)を出力しないと仮定しましょう。

ただし、

Python 2は、印刷方法に注意を払っています。<=>、<=>、または他の何かを使用していますか? <=>に対して2つの連続呼び出しを行うと、Pythonは2つの間にスペースを入れることを要求します。

import sys
a=raw_input()
for i in range(0,len(a)):
       sys.stdout.write(a[i])
print('''first line \
second line''')

生成されます

  

1行目2行目

ファイルからいくつかの数字を読みたいと思ったら、同じ問題を抱えていました。このように解決しました:

f = open('file.txt', 'r')
for line in f:   
    print(str.split(line)[0])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top