简体   繁体   English

在ipython中为列表元素完成选项卡

[英]Tab completion in ipython for list elements

Here is how tab completion is working for me: 标签完成对我有用:

In [84]: a="string"

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

Tab completion for strings is working here: 字符串的标签完成在这里工作:

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   

Tab completion for lists is working here: 列表的标签完成在这里工作:

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

Tab completion for strings is not working here: 字符串的标签完成在这里不起作用:

In [87]: b[0].

One possible workaround: 一种可能的解决方法:

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   

Is it possible to use completion without mentioned workaround? 是否可以使用完成而不提及变通方法? I'm experiencing similar behavior in ipdb, is it possible to fix this behavior also there? 我在ipdb中遇到类似的行为,是否有可能修复此行为? I'm using ipythoon v3.1.0 and ipdb v 0.8. 我正在使用ipythoon v3.1.0和ipdb v 0.8。 Thanks 谢谢

create ipython profile: 创建ipython配置文件:

ipython profile create testing

in ipython_config.py un-comment this line 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

Load IPython with this profile: 使用此配置文件加载IPython:

ipython notebook --profile=testing

This gives TAB completion for list members and dictionary keys and values. 这为列表成员和字典键和值提供了TAB完成。


One quick alternative is to use dir() method: 一种快速的替代方法是使用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']

Another method is to use Python or IPython interactive console or regular editor in PTVS, which is able to do completions (intellisense) on list elements. 另一种方法是在PTVS中使用Python或IPython交互式控制台或常规编辑器,它能够对列表元素进行完成(intellisense)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM