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

В python, если я говорю

print 'h' 

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

 print 'h', 

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

 print 'h', print 'm', 

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

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

16 Solutions collect form web for “Как сохранить печать Python при добавлении новых строк или пробелов?”

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

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

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

 print('h', end='') 

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

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

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

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

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

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

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

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

печатает helloworld !

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

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

  print 'h', print '\bm' 

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

 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, …).

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

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

будет давать:

 HelloWorld 

Вот и все.

В python 2.6:

 >>> print 'h','m','h' hmh >>> 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 функции print.

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

например

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

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

 print "a", print "b", 

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

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

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

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

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

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

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

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

он будет производить

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

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

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

 f = open('file.txt', 'r') for line in f: print(str.split(line)[0]) 
  • Число меньше отрицательной бесконечности в python?
  • Перестановка массива в 2-D путем указания только размера столбца
  • print функция в Python?
  • Преобразование float в строку без научной нотации и ложной точности
  • Самый безопасный способ преобразования float в integer в python?
  • Python - обнаружить кодировку и преобразовать в utf-8
  • Неподдерживаемые символы ввода
  • overriding bool () для пользовательского класса
  • Python - лучший язык программирования в мире.