Python中文
首页
教程
问答
标签
搜索
登录
注册
更改Python Cmd模块处理自动完成的方式
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个Cmd控制台设置为自动完成一个魔术卡名称:收集收集管理系统。</p> <p>它使用文本参数查询数据库中的卡片,并使用结果自动完成/建议卡片。</p> <p>但是,这些卡的名称有多个单词,并且Cmd从<em>最后一个</em>空格运行到行尾的自动完成。</p> <p>例如:</p> <pre><code>mtgdb> add Mage<tab><tab> Mage Slayer (Alara Reborn) Magefire Wings (Alara Reborn) mtgdb> add Mage S<tab><tab> Sages of the Anima (Alara Reborn) Sanctum Plowbeast (Alara Reborn) Sangrite Backlash (Alara Reborn) Sanity Gnawers (Alara Reborn) Sen Triplets (Alara Reborn) [...] mtgdb> add Mage Sl<tab> mtgdb> add Mage Slave of Bolas (Alara Reborn) </code></pre> <p>我尝试从<code>line</code>参数中手动获取所需内容,该参数从数据库中获取所需的结果,但这无法覆盖第一个单词:</p> <pre><code>mtgdb> add Mage Sl<tab> mtgdb> add Mage Mage Slayer (Alara Reborn) </code></pre> <p>最后,我需要自动完成器像这样工作:</p> <pre><code>mtgdb> add Mage Sl<tab> mtgdb> add Mage Slayer (Alara Reborn) </code></pre> <p>除了上面的手动解析尝试之外,我还尝试用加号替换空格,发现Cmd也非常乐意拆分这些字符。用下划线替换空格是可行的,但是Unhinged中有一张名为<code>_____</code>的卡,因此我必须通过杂技来解除字符串的绑定,因为我不能只是<code>line.replace("_", " ")</code>。</p> <p>下面是一些可运行的测试代码:</p> <pre><code>import cmd commands = [ "foo", "foo bar blah", "bar", "bar baz blah", "baz", "baz foo blah"] class Console(cmd.Cmd): intro = "Test console for" + \ "http://stackoverflow.com/questions/4001708/\n" + \ "Type \"cmd<space><tab><tab>\" to test " + \ "auto-completion with spaces in commands\nwith " + \ "similar beginings." def do_cmd(self, line): print(line) def complete_cmd(self, text, line, start_index, end_index): if text: return [command for command in commands if command.startswith(text)] else: return commands if __name__ == "__main__": command = Console() command.cmdloop() </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你可以做<code>readline.set_completer_delims('')</code>。</p> <p>但是,您的<code>complete_*</code>函数将不再被调用;您必须重写<code>Cmd.complete</code>或<code>Cmd.completenames</code>。有关详细信息,请查看<code>cmd</code>模块的源代码。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python中从数据帧列中删除分类值?
6 回答
如何在python中从数据帧列表中删除引号
9 回答
如何在python中从数据帧创建列表
5 回答
如何在Python中从数据帧创建嵌套的JSON
7 回答
如何在Python中从数据帧显示wordcloud
10 回答
如何在Python中从数据帧的时间戳中删除字符
8 回答
如何在Python中从数据帧绘制简单绘图?
8 回答
如何在python中从数据帧行提取具有特定长度的范围?
2 回答
如何在python中从数据帧设置dict中的值
7 回答
如何在Python中从数据库中获得一个结果
5 回答
如何在python中从数据框中绘制分类条形图
8 回答
如何在Python中从数据框中选择特定细节?
2 回答
如何在python中从数据集中删除unicode
10 回答
如何在python中从数据集中删除某些数值?
10 回答
如何在python中从数据集中选择行
5 回答
如何在Python中从数组中删除元素
8 回答
如何在python中从数组中删除单个倒逗号?
9 回答
如何在python中从数组中删除对象?
3 回答
如何在python中从数组中删除引号
8 回答
如何在python中从数组中删除所有最小值
2 回答