Python readline模块:设置2个字符分隔符

时间:2011-09-02 11:29:30

标签: python autocomplete readline

我正在使用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 "

1 个答案:

答案 0 :(得分:0)

您可能必须使用自己的功能

readline.set_completer([function])

来自python doc:

“完成函数被称为函数(文本,状态),状态为0,1,2,...,直到它返回非字符串值。它应该返回从文本开始的下一个可能的完成。 “