我正在使用readline
模块自动完成名称(名字姓氏)。
我想设置一个2个字符的分隔符,但是通过设置readline.set_completer_delims(', ')
,它接受逗号和空格作为分隔符。但我只想要这个组合。
问题是,现在我输入了多次存在的名字,姓氏不同。 readline认为空白字符是分隔符,而是开始重新建议所有名称,而不是在完成时建议所有可能的姓氏。
我该如何解决这个问题?
更多信息:我已经在使用自定义完成功能:
# Configure and enable tab completion
def completer(text, state):
"""Contacts completer function for readline module"""
options = [x[2].strip() for x in contacts
if x[2].lower().startswith(text.strip().lower())]
try:
return options[state] + ', '
except IndexError:
return None
readline.set_completer(completer)
问题不在于该功能不正确。我调试了它,当完成一个以空格结尾的单词(如"simon "
)时,传递给完成符的text
值为" "
而不是"simon "
。
答案 0 :(得分:0)
您可能必须使用自己的功能
readline.set_completer([function])
来自python doc:
“完成函数被称为函数(文本,状态),状态为0,1,2,...,直到它返回非字符串值。它应该返回从文本开始的下一个可能的完成。 “