2013-12-15 50 views
1

我试图从用户那里读取一个\n字符,但它不工作。 这里是我的代码:阅读Python中的“ n”字符失败

op = raw_input("Hit enter to continue!") 

if op == '\n': 
#run code 

然而,当我打进入if condition里面的代码不会运行。这就像op不是\n,虽然我刚刚进入。

+3

'raw_input'不返回新的行字符。 – Tim

回答

1

来自raw_input docstring:“从标准输入读取一个字符串,尾随的换行符被删除。

所以才改为

if op == '': 
#run code 
4

raw_input从输入端去除\n。如果你想检查一个字符串的空白,即:用户刚刚使用输入...只需使用if not op

您还可以在此调试自己很容易,比如:

op = raw_input('enter something: ') # hit only enter 
print repr(op) # it's a blank string 
+0

+1显示如何进行调试。教一个人钓鱼... – SethMMorton

1

不,raw_input(Python的2.X)或input(Python 3.x都有)不返回的最后一个换行符(\n)字符因为这是它如何知道你已经完成输入输入

如果你想检查空用户输入(简单的输入),你可以做

if not op: 
    # code 

if op == "": 
    # code 

if not op:版本是因为从not布尔评估通用声明返回True所有这些 -

  1. 空 “iterables” - ''[]{}()
  2. 布尔 “假” - False00.0
1

,检查是否有空白的输入的最佳方法是对第一条带然后测试感实性:

if not op.strip(): 
    #code 

您需要调用带(),因为空格仍然True

>>> s 
' ' 
>>> bool(s) 
True 
1

如果你想,直到用户点击进入,你可以只使用暂停的Python 2.x的脚本:

raw_input("Hit enter to continue!") 

那么不管是输入脚本会继续使用任何代码遵循什么。我倾向于做它的功能(一个称为例如“提示”),所以,如果我想要编辑的提示或行为,我可以编辑的功能,所以:你什么时候

def prompt(): 
    raw_input("Hit enter to continue!") 

然后在您的脚本想暂停直到用户输入任何东西使用:

prompt()