如何为raw_input设置默认可编辑字符串?

61 投票
7 回答
53563 浏览
提问于 2025-04-16 14:15

我正在使用Python 2.7的raw_input来从标准输入读取数据。

我想让用户能够修改一个默认的字符串。

代码:

i = raw_input("Please enter name:")

控制台:

Please enter name: Jack

用户应该看到默认的名字Jack,但可以通过退格键把它改成其他名字。

Please enter name:这部分是raw_input的提示信息,用户不能修改这部分内容。

7 个回答

7

在dheerosaur的回答中,如果用户按下回车键来选择默认值,实际上这个值不会被保存,因为Python会把它当作一个空字符串('')来处理。所以我想在dheerosaur的基础上再多说一点。

default = "Jack"
user_input = raw_input("Please enter name: %s"%default + chr(8)*4)
if not user_input:
    user_input = default

顺便提一下,退格键ASCII值08

32

Python2.7 获取用户输入并设置默认值:

把下面的内容放到一个叫做 a.py 的文件里:

import readline
def rlinput(prompt, prefill=''):
   readline.set_startup_hook(lambda: readline.insert_text(prefill))
   try:
      return raw_input(prompt)
   finally:
      readline.set_startup_hook()

default_value = "an insecticide"
stuff = rlinput("Caffeine is: ", default_value)
print("final answer: " + stuff)

运行这个程序时,它会暂停并给用户显示这个内容:

el@defiant ~ $ python2.7 a.py
Caffeine is: an insecticide

光标在最后,用户按退格键把“an insecticide”删掉,输入其他内容,然后按回车:

el@defiant ~ $ python2.7 a.py
Caffeine is: water soluable

程序最后会这样结束,最终的答案就是用户输入的内容:

el@defiant ~ $ python2.7 a.py 
Caffeine is: water soluable
final answer: water soluable

与上面相同,但适用于 Python3:

import readline    
def rlinput(prompt, prefill=''):
   readline.set_startup_hook(lambda: readline.insert_text(prefill))
   try:
      return input(prompt)
   finally:
      readline.set_startup_hook()

default_value = "an insecticide"
stuff = rlinput("Caffeine is: ", default_value)
print("final answer: " + stuff)

关于这里发生了什么的更多信息:

https://stackoverflow.com/a/2533142/445131

83

你可以这样做:

i = raw_input("Please enter name[Jack]:") or "Jack"

这样一来,如果用户只是按下回车键而没有输入任何内容,"i" 就会被赋值为 "Jack"。

撰写回答