[英]Python readline module: Set 2 character delimiter
我正在使用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 "
。
您可能需要為此使用自己的功能,
readline.set_completer([function])
從python doc:
“對於0、1、2,...中的狀態,該完成函數稱為函數(文本,狀態),直到它返回非字符串值。它應該返回以文本開頭的下一個可能的完成。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.