如何为 raw_input 设置默认的可编辑字符串?
我使用 Python 2.7 的 raw_input
从标准输入读取。
我想让用户更改给定的默认字符串。
代码:
i = raw_input("Please enter name:")
控制台:
Please enter name: Jack
用户应该看到 Jack
,但可以将其更改(退格)为其他内容。
请输入名称:
参数将是 raw_input
的提示,并且该部分不应由用户更改。
I'm using Python 2.7's raw_input
to read from stdin.
I want to let the user change a given default string.
Code:
i = raw_input("Please enter name:")
Console:
Please enter name: Jack
The user should be presented with Jack
but can change (backspace) it to something else.
The Please enter name:
argument would be the prompt for raw_input
and that part shouldn't be changeable by the user.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Python2.7获取raw_input并设置默认值:
将其放入名为a.py的文件中:
运行程序,它会停止并向用户显示以下内容:
光标位于末尾,用户按下退格键,直到“杀虫剂”消失,输入其他内容,然后按 Enter:
程序像这样完成,最终答案得到用户输入的内容:
与上面相同,但适用于 Python3:
更多有关此处发生的情况的信息:
https://stackoverflow.com/a/2533142/445131
Python2.7 get raw_input and set a default value:
Put this in a file called a.py:
Run the program, it stops and presents the user with this:
The cursor is at the end, user presses backspace until 'an insecticide' is gone, types something else, then presses enter:
Program finishes like this, final answer gets what the user typed:
Equivalent to above, but works in Python3:
More info on what's going on here:
https://stackoverflow.com/a/2533142/445131
在 dheerosaur 的回答中,如果用户按 Enter 键选择现实中的默认值,它不会被保存,因为 python 认为它是 '' 字符串,所以对 dheerosaur.txt 进行了一些扩展。
仅供参考.. 退格键的
ASCII 值
是08
In dheerosaur's answer If user press Enter to select default value in reality it wont be saved as python considers it as '' string so Extending a bit on what dheerosaur.
Fyi .. The
ASCII value
of backspace is08
我添加这个只是因为您应该编写一个简单的函数以供重用。这是我写的:
I only add this because you should write a simple function for reuse. Here is the one I wrote:
在具有
readline
的平台上,您可以使用此处描述的方法:https://stackoverflow.com/a/ 2533142/1090657在 Windows 上,您可以使用 msvcrt 模块:
请注意,箭头键不适用于 Windows 版本,使用时不会发生任何情况。
On platforms with
readline
, you can use the method described here: https://stackoverflow.com/a/2533142/1090657On Windows, you can use the msvcrt module:
Note that arrows keys don't work for the windows version, when it's used, nothing will happen.
对于使用
gitbash/msys2
或cygwin
的 windows 用户,您可以通过 python 子进程使用它内置的 readline。这是一种黑客攻击,但效果很好,并且不需要任何第三方代码。对于个人工具来说,这非常有效。Msys2 特定:如果您希望 ctrl+c 立即退出,则需要使用
运行您的程序
winpty python 程序.py
For windows users with
gitbash/msys2
orcygwin
you can use it's built in readline through python subprocess. It is a sort of hack but works quite well and doesn't require any third party code. For personal tools this works really well.Msys2 specific: If you want ctrl+c to immediately exit, you will need to run your program with
winpty python program.py
试试这个:
raw_input("请输入姓名:Jack" + chr(8)*4)
backspace
的 ASCII 值为08
。Try this:
raw_input("Please enter name: Jack" + chr(8)*4)
The ASCII value of
backspace
is08
.你可以这样做:
这样,如果用户只按回车键而不输入任何内容,“i”将被分配为“Jack”。
You could do:
This way, if user just presses return without entering anything, "i" will be assigned "Jack".