python - ipython 中的制表符完成列表元素

标签 python autocomplete ipython jupyter ipdb

以下是制表符补全对我来说是如何工作的:

In [84]: a="string"

In [85]: b = ["str", "ing"]

字符串的制表符完成在这里工作:

In [86]: a.
a.capitalize  a.decode      a.expandtabs  a.index       a.isdigit     a.istitle     a.ljust       a.partition   a.rindex      a.rsplit      a.splitlines  a.swapcase    a.upper       
a.center      a.encode      a.find        a.isalnum     a.islower     a.isupper     a.lower       a.replace     a.rjust       a.rstrip      a.startswith  a.title       a.zfill       
a.count       a.endswith    a.format      a.isalpha     a.isspace     a.join        a.lstrip      a.rfind       a.rpartition  a.split       a.strip       a.translate   

列表的制表符完成在这里工作:

In [86]: b.
b.append   b.count    b.extend   b.index    b.insert   b.pop      b.remove   b.reverse  b.sort     

字符串的制表符补全在这里不起作用:

In [87]: b[0].

一种可能的解决方法:

In [88]: c = b[0]

In [89]: c.
c.capitalize  c.decode      c.expandtabs  c.index       c.isdigit     c.istitle     c.ljust       c.partition   c.rindex      c.rsplit      c.splitlines  c.swapcase    c.upper       
c.center      c.encode      c.find        c.isalnum     c.islower     c.isupper     c.lower       c.replace     c.rjust       c.rstrip      c.startswith  c.title       c.zfill       
c.count       c.endswith    c.format      c.isalpha     c.isspace     c.join        c.lstrip      c.rfind       c.rpartition  c.split       c.strip       c.translate   

是否可以在没有提到解决方法的情况下使用完成?我在 ipdb 中遇到了类似的行为,是否也可以在那里修复此行为?我正在使用 ipython v3.1.0 和 ipdb v 0.8。谢谢

最佳答案

创建 ipython 配置文件:

ipython profile create testing

ipython_config.py中取消注释这一行

# Activate greedy completion
# 
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
c.IPCompleter.greedy = True

使用此配置文件加载 IPython:

ipython notebook --profile=testing

这为列表成员和字典键和值提供了 TAB 完成。


一个快速的替代方法是使用 dir() 方法:

dir(b[0])

#returns:

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

另一种方法是使用 Python 或 IPython 交互式控制台或 PTVS 中的常规编辑器,它能够对列表元素进行补全(智能感知)。

关于python - ipython 中的制表符完成列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363407/

相关文章:

python - 将 numpy 数组从值转换为索引

python - lxml 中 cssselect 的 XHTML 命名空间问题

jsf - Primefaces 自动完成输入键行为

javascript - IE7 上的 jquery.ui.autocomplete.js 问题

python - ipywidgets,如何更改 slider 的值显示精度

Python:UnboundLocalError:赋值前引用的局部变量 'count'

python - Web 抓取不使用 <table> 的表 (Python)

android - getEditableText 和 getText 有什么区别?

python - ipython notebook pandas 最大允许列数

python - 交互式 Python : cannot get `%lprun` to work, 尽管 line_profiler 已正确导入