Как сохранить печать Python от добавления новых строк или пробелов? [дубликат]
этот вопрос уже есть ответ здесь:
- как печатать без новой строки или пробелом? 25 ответов
в python, если я скажу
print 'h'
Я получаю букву h и новую строку. Если я скажу
print 'h',
буква ч, а не строки. Если я скажу
print 'h',
print 'm',
Я получаю букву h, пробел и буква М. Как я могу запретить Python печатать пробел?
операторы печати-это разные итерации одного и того же цикла, поэтому я не могу просто использовать оператор+.
16 ответов:
просто комментарий. В Python 3, вы будете использовать
print('h', end='')чтобы подавить Терминатор конечной линии, и
print('a', 'b', 'c', sep='')для подавления разделителя пробелов между элементами.
Грег прав-вы можете использовать sys.стандартный вывод.пиши
возможно, однако, вы должны рассмотреть возможность рефакторинга вашего алгоритма для накопления списка
, а затем 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 (), вероятно, более удобен для большинства случаев.
восстановить контроль над вашей консоли! Просто:
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, ...).
Я не добавляю новый ответ. Я просто ставлю лучший отмеченный ответ в лучшем формате. Я вижу, что лучший ответ по рейтингу-это использование
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 >>>таким образом, используя print_function из __future__ вы можете явно установить sep и конец параметры функции печати.
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) не печатает пробелы (пробелы , ни переводы строк).Python 2, однако, обратите внимание на то, как вы печатаете - вы используете
sys.stdout.write, или что-то еще? Если вы сделаете два подряд звонки