如何为raw_input设置默认可编辑字符串?
我正在使用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)
关于这里发生了什么的更多信息:
83
你可以这样做:
i = raw_input("Please enter name[Jack]:") or "Jack"
这样一来,如果用户只是按下回车键而没有输入任何内容,"i" 就会被赋值为 "Jack"。