防止python打印换行符
我用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
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单元测试)。谢谢你的回答!