Как сохранить печать 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
, или что-то еще? Если вы сделаете два подряд звонки