如何防止 Python 打印添加换行符或空格?[重复]

2025-01-13 08:53:00
admin
原创
146
摘要:问题描述:在 Python 中,如果我说print 'h' 我得到了字母 h 和一个换行符。如果我说print 'h', 我得到了字母 h 而没有换行符。如果我说print 'h', print 'm', 我得到了字母 h、一个空格和字母 m。如何防止 Python 打印空格?打印语句是同一循环的不同迭代,所...

问题描述:

在 Python 中,如果我说

print 'h'

我得到了字母 h 和一个换行符。如果我说

print 'h',

我得到了字母 h 而没有换行符。如果我说

print 'h',
print 'm',

我得到了字母 h、一个空格和字母 m。如何防止 Python 打印空格?

打印语句是同一循环的不同迭代,所以我不能只使用 + 运算符。


解决方案 1:

在Python 3中,使用

print('h', end='')

抑制行尾终止符,以及

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

隐藏项目之间的空格分隔符。请参阅文档print

解决方案 2:

import sys

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

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

您需要调用sys.stdout.flush(),因为否则它会将文本保存在缓冲区中,而您将看不到它。

解决方案 3:

Greg 是对的——你可以使用 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:

为了完整性,另一种方法是在执行写入后清除软空间值。

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

印刷helloworld !

不过,在大多数情况下,使用 stdout.write() 可能更方便。

解决方案 7:

这可能看起来很愚蠢,但似乎是最简单的:

    print 'h',
    print 'm'

解决方案 8:

重新控制您的控制台!只需:

from __past__ import printf

其中__past__.py包含:

import sys
def printf(fmt, *varargs):
    sys.stdout.write(fmt % varargs)

然后:

>>> printf("Hello, world!
")
Hello, world!
>>> printf("%d %d %d
", 0, 1, 42)
0 1 42
>>> printf('a'); printf('b'); printf('c'); printf('
')
abc
>>>

额外奖励:如果您不喜欢print >> f, ...,您可以将此功能扩展为 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
>>>

因此,使用 future 中的 print_function,您可以明确设置打印函数的sepend参数。

解决方案 11:

您可以像 C 中的 printf 函数一样使用打印。

例如

打印“%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。您如何解释这一点?空格去哪儿了?

我还是不太明白这里到底发生了什么。有人能看看我的最佳猜测吗:

,当您有尾随时,我尝试推断规则print

首先,让我们假设print ,(在 Python 2 中)不会打印任何空格(空格换行符)。

但是,Python 2 会注意您的打印方式 - 您使用的是print、 还是sys.stdout.write,还是其他什么?如果您连续两次调用print,那么 Python 会坚持在两者之间添加一个空格。

解决方案 14:

print('''first line \nsecond line''')

它会产生

第一行 第二行

解决方案 15:

import sys
a=raw_input()
for i in range(0,len(a)):
       sys.stdout.write(a[i])
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1590  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1361  
  信创产品在政府采购中的占比分析随着信息技术的飞速发展以及国家对信息安全重视程度的不断提高,信创产业应运而生并迅速崛起。信创,即信息技术应用创新,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。政府采购作为推动信创产业发展的重要力量,其对信创产品的采购占比情况备受关注。这不仅关系到信创产业的发展前...
信创和国产化的区别   18  
  信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,摆脱对国外技术的依赖。近年来,国货国用信创发展势头迅猛,在诸多领域取得了显著成果。这一发展趋势对科技创新产生了深远的推动作用,不仅提升了我国在信息技术领域的自主创新能力,还为经济社会的数字化转型提供了坚实支撑。信创推动核心技术突破信创产业的发展促使企业和科研...
信创工作   18  
  信创技术,即信息技术应用创新产业,旨在实现信息技术领域的自主可控与安全可靠。近年来,信创技术发展迅猛,对中小企业产生了深远的影响,带来了诸多不可忽视的价值。在数字化转型的浪潮中,中小企业面临着激烈的市场竞争和复杂多变的环境,信创技术的出现为它们提供了新的发展机遇和支撑。信创技术对中小企业的影响技术架构变革信创技术促使中...
信创国产化   19  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用