Python印刷で改行やスペースが追加されないようにするにはどうすればよいですか? [複製]
-
05-07-2019 - |
質問
この質問にはすでに回答があります:
- 改行またはスペースなしで印刷する方法 21の答え
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])