簡體   English   中英

Python readline模塊:設置2個字符定界符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM