防止python打印换行符

防止python打印换行符,python,input,newline,user-input,Python,Input,Newline,User Input,我用Python编写了这段代码 inputted = input("Enter in something: ") print("Input is {0}, including the return".format(inputted)) 输出 Enter in something: something Input is something , including the return 我不知道发生了什么事;如果使用不依赖于用户输入的变量,则在使用该变量格式化后不会得到换行符。当我点击retur

我用Python编写了这段代码

inputted = input("Enter in something: ")
print("Input is {0}, including the return".format(inputted))
输出

Enter in something: something
Input is something
, including the return
我不知道发生了什么事;如果使用不依赖于用户输入的变量,则在使用该变量格式化后不会得到换行符。当我点击return时,我怀疑Python可能将换行符作为输入


如何使输入不包含任何换行符,以便与其他字符串/字符进行比较?(例如,
something==“a”

您是正确的-输入的
中包含了一个换行符。要删除它,只需调用
strip(“\r\n”)
从末尾删除换行符:

print("Input is {0}, including the return".format(inputted.strip("\r\n")))
如果
inputed
末尾没有换行符,这不会导致任何问题,但会删除其中的任何换行符,因此无论
inputed
是否为用户输入,您都可以使用此选项

如果文本中根本不需要任何换行符,可以使用
inputed.replace(“\r\n”,”)
删除所有换行符

inputted = inputted.strip()
编辑:如上所述,这将消除开头和结尾的所有空白。仅删除尾随换行符的一种方法是:

import re
inputted = re.sub("[\n\r]+$", "", inputted)

如果只想剥离最后一行的结尾,可以使用rstrip。

inputed.rstrip(“\r\n”)

您的问题实际上是Eclipse。假设您使用PyDev,我就能够重现这个问题。在Eclipse控制台中输入内容时,问题会出现,如问题中所述。但是,当使用Python 3.1.1解释器直接执行相同的脚本时,输入的
不包括换行符

我研究了Python源代码,发现如果stdin是交互式的(即TTY或提示符,不管您如何调用它),则
input()
使用GNU readline,但如果需要,可以使用stdin对象的
.readline()
方法。然后,如果
readline
的结果以
\n
结尾,则删除该字符。注意:此处无CR-LF或LF-CR处理(在回退情况下)

所以我写了这个小脚本来看看到底发生了什么:

import sys
from io import StringIO

for stdin in [sys.stdin, StringIO("test\r\ntest\r\n")]:
    sys.stdin = stdin 

    print("readline returns this: " + repr(sys.stdin.readline()))

    inputted = input("Enter in something: ")
    print("inputted: " + repr(inputted))

    print("inputted is printed like this: --> {0} <--".format(inputted))
导入系统 从io导入StringIO 对于[sys.stdin,StringIO(“test\r\ntest\r\n”)]中的stdin: sys.stdin=stdin 打印(“readline返回:”+repr(sys.stdin.readline())) 输入=输入(“输入某物:”) 打印(“输入:+repr(输入))
打印(“输入的内容是这样打印的:-->{0}这将去除所有空格-包括行尾,但不包括空格和制表符。可能是正确的做法-但可能不是。@Steve True。编辑以反映这一点。false,实际上-最初是如何做到的”不是“进去?该死!你用的是哪一个OS/Python版本?我不能在Win XP上用Python 3.1.1复制它。@AndiDog:Python 3.1.1,Windows 7,Eclipsebebebe是重点,但是如果打印调用以“返回”结束,输出不应该以“返回”结束,而不是“换行”。@None whoopw!你说得对:)可能重复谢谢!很遗憾,在单独的行或其他行中,剥离或替换都不适用于我。请尝试剥离“\r”而不是“\n”。当脚本只需要“\n”时,您的终端可能会发送“\r\n”。有趣的是-Python通常只需
“\n”
”就可以删除所有换行符,或者至少我认为它是这样做的()。我将编辑为strip\r\n,它应该同时执行这两个操作。nit:rstrip()优先于strip(),此处:strip()从两端删除。诚然,您知道在开始时没有额外的换行符,但为什么不说出您的意思呢?该死的Eclipse:)我想我会切换回Netbeans,但我无法让Python 3单元测试在Netbeans中正常工作(只设法运行Jython 2.5单元测试)。谢谢你的回答!