Как сохранить печать Python при добавлении новых строк или пробелов?

В python, если я скажу

print 'h'

Я получаю букву h и новую строку. Если я скажу

print 'h',

Я получаю букву h и новую строку. Если я скажу

print 'h',
print 'm',

Получаю букву h, пробел и букву m. Как я могу запретить Python печатать пробел?

Операторы печати представляют собой разные итерации одного и того же цикла, поэтому я не могу просто использовать оператор +.

Ответ 1

Вы можете использовать:

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

Ответ 2

Просто комментарий. В Python 3 вы будете использовать

print('h', end='')

для подавления концевого терминатора и

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

чтобы подавить разделитель пробелов между элементами.

Ответ 3

Грег прав - вы можете использовать sys.stdout.write

Возможно, однако, вам следует рассмотреть возможность реорганизации вашего алгоритма для накопления списка <whatevers> и затем

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

Ответ 4

Или используйте +, т.е.:

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

Просто убедитесь, что все объекты с конкатенацией.

Ответ 5

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 напрямую.

Ответ 6

Для полноты, еще один способ - очистить значение softspace после выполнения записи.

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

печатает helloworld !

Использование stdout.write(), вероятно, более удобно для большинства случаев.

Ответ 7

Это может показаться глупым, но, кажется, самым простым:

    print 'h',
    print '\bm'

Ответ 8

Восстановите управление своей консолью! Просто:

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, ..., вы можете расширить этот caper до fprintf (f,...).

Ответ 9

Я не добавляю новый ответ. Я просто помещаю лучший помеченный ответ в лучшем формате. Я вижу, что лучший ответ по рейтингу - это sys.stdout.write(someString). Вы можете попробовать:

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

даст:

HelloWorld

Вот и все.

Ответ 10

В 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
>>>

Таким образом, используя print_function из __future__, вы можете явно указать параметры sep и end функции печати. ​​

Ответ 11

Вы можете использовать печать как функцию printf в C.

например.

print "% s% s" % (x, y)

Ответ 12

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

Ответ 13

sys.stdout.write - это (в Python 2) единственное надежное решение. Печать на Python 2 безумна. Рассмотрим этот код:

print "a",
print "b",

Это приведет к печати a b, что приведет к подозрению в том, что оно печатает конечное пространство. Но это неверно. Вместо этого попробуйте:

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

Откроется a0b. Как ты объясняешь это? Где пропали пробелы?

Я все еще не могу понять, что здесь происходит. Может ли кто-нибудь взглянуть на мое лучшее предположение:

Моя попытка вывести правила, когда у вас есть trailing , на print:

Сначала предположим, что print , (в Python 2) не печатает пробелы (пробелы и символы перевода строки).

Python 2, однако, обращает внимание на то, как вы печатаете - используете ли вы print или sys.stdout.write или что-то еще? Если вы делаете два последовательных звонка на print, тогда Python будет настаивать на помещении промежутка между ними.

Ответ 14

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

Ответ 15

print('''first line \
second line''')

он произведет

первая строка второй строки

Ответ 16

У меня была такая же проблема, как только я захотел прочитать некоторые цифры из файла. Я решил это так:

f = open('file.txt', 'r')
for line in f:   
    print(str.split(line)[0])