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

2025-01-13 08:53:00
admin
原创
169
摘要:问题描述:在 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2379  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1510  
  PLM(产品生命周期管理)系统在企业项目管理中扮演着至关重要的角色,它能够整合产品从概念设计到退役的全流程信息,提升协同效率,降低成本。然而,项目范围蔓延是项目管理过程中常见且棘手的问题,在PLM系统环境下也不例外。范围蔓延可能导致项目进度延迟、成本超支、质量下降等一系列不良后果,严重影响项目的成功交付。因此,如何在P...
plm项目经理是做什么   16  
  PLM(产品生命周期管理)系统在现代企业的产品研发与管理过程中扮演着至关重要的角色。它不仅仅是一个管理产品数据的工具,更能在利益相关者分析以及沟通矩阵设计方面提供强大的支持。通过合理运用PLM系统,企业能够更好地识别、理解和管理与产品相关的各类利益相关者,构建高效的沟通机制,从而提升产品开发的效率与质量,增强企业的市场...
plm是什么   20  
  PLM(产品生命周期管理)项目管理对于企业产品的全生命周期规划、执行与监控至关重要。在项目推进过程中,监控进度偏差是确保项目按时、按质量完成的关键环节。五维健康检查指标体系为有效监控PLM项目进度偏差提供了全面且系统的方法,涵盖了项目的多个关键维度,有助于及时发现问题并采取针对性措施。需求维度:精准把握项目基石需求维度...
plm项目管理软件   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用