小编Fre*_*Foo的帖子

用于在NLTK中解析的英语语法

是否有现成的英语语法,我可以加载它并在NLTK中使用?我搜索了使用NLTK解析的示例,但似乎我必须在解析句子之前手动指定语法.

非常感谢!

python grammar nlp nltk

63
推荐指数
5
解决办法
4万
查看次数

计算生成器/迭代器中项目数的最短方法是什么?

如果我想要迭代中的项目数量而不关心元素本身,那么获得该元素的pythonic方法是什么?现在,我会定义

def ilen(it):
    return sum(itertools.imap(lambda _: 1, it))    # or just map in Python 3
Run Code Online (Sandbox Code Playgroud)

但我明白lambda接近被认为是有害的,lambda _: 1当然不是很漂亮.

(这个用例是计算匹配正则表达式的文本文件中的行数,即grep -c.)

python iterator iterable generator

60
推荐指数
5
解决办法
3万
查看次数

Python defaultdict和lambda

在别人的代码中,我读了以下两行:

x = defaultdict(lambda: 0)
y = defaultdict(lambda: defaultdict(lambda: 0))
Run Code Online (Sandbox Code Playgroud)

由于defaultdict的参数是默认工厂,我认为第一行意味着当我为不存在的密钥k调用x [k]时(例如像v = x [k]这样的语句),键值对(k) ,0)将自动添加到字典中,就像首次执行语句x [k] = 0一样.我对么?

你呢?似乎默认工厂将创建一个默认为0的defaultdict.但这具体意味着什么呢?我尝试在Python shell中使用它,但无法弄清楚它究竟是什么.

python collections defaultdict

53
推荐指数
4
解决办法
4万
查看次数

在Python中继承方法的文档字符串

我有一个带有文档字符串的OO层次结构,它需要与代码本身一样多的维护.例如,

class Swallow(object):
    def airspeed(self):
        """Returns the airspeed (unladen)"""
        raise NotImplementedError

class AfricanSwallow(Swallow):
    def airspeed(self):
        # whatever
Run Code Online (Sandbox Code Playgroud)

现在,问题是AfricanSwallow.airspeed不继承超类方法的docstring.我知道我可以使用模板方法模式保留文档字符串,即

class Swallow(object):
    def airspeed(self):
        """Returns the airspeed (unladen)"""
        return self._ask_arthur()
Run Code Online (Sandbox Code Playgroud)

_ask_arthur在每个子类中实现.但是,我想知道是否还有另一种方法可以继承docstrings,也许还有一些我尚未发现的装饰器?

python oop inheritance docstring template-method-pattern

51
推荐指数
3
解决办法
6159
查看次数

跟踪Python导入

我的Python库只是改变了它是从主模块的名称foo.barfoobar.对于后向compat,foo.bar仍然存在,但导入它会引发一些警告.现在,似乎一些示例程序仍然从旧模块导入,但不是直接导入.

我想找到错误的import陈述.是否有任何工具允许我跟踪导入并找到罪魁祸首而不涉及所有代码?

python debugging import trace

39
推荐指数
2
解决办法
3万
查看次数

size_type可以大于std :: size_t吗?

标准容器,std::allocatorsize_type定义为std::size_t.但是,是否可以使用分配器来分配大小无法用size_t?表示的对象?换句话说,可以size_type永远大于size_t

c++ stl size-t allocator

36
推荐指数
4
解决办法
2341
查看次数

从Flask返回一个requests.Response对象

我正在尝试使用Flask和请求构建一个简单的代理.代码如下:

@app.route('/es/<string:index>/<string:type>/<string:id>',
           methods=['GET', 'POST', 'PUT']):
def es(index, type, id):
    elasticsearch = find_out_where_elasticsearch_lives()
    # also handle some authentication
    url = '%s%s%s%s' % (elasticsearch, index, type, id)

    esreq = requests.Request(method=request.method, url=url,
                             headers=request.headers, data=request.data)
    resp = requests.Session().send(esreq.prepare())
    return resp.text
Run Code Online (Sandbox Code Playgroud)

这有效,除了它丢失了Elasticsearch的状态代码.我尝试直接返回resp(a requests.models.Response),但这失败了

TypeError: 'Response' object is not callable
Run Code Online (Sandbox Code Playgroud)

还有另一种简单的方法可以requests.models.Response从烧瓶中返回吗?

python proxy flask python-requests

36
推荐指数
2
解决办法
4万
查看次数

如何在.vimrc文件中拆分长行?

我有一条线.vimrc超过80个字符长:

autocmd FileType python set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class,with
Run Code Online (Sandbox Code Playgroud)

我觉得这很烦人,所以我想把它分成多行,但我不知道怎么做.我试过,\因为它在Python和Bourne shell中做了诀窍,但显然在Vim中这不是有效的语法:

autocmd FileType python set smartindent \
    cinwords=if,elif,else,for,while,try,except,finally,def,class,with
Run Code Online (Sandbox Code Playgroud)

E492: Not an editor command
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何分割这条线?

(如果有人可以告诉我如何添加cinwords而不是完全重置它,那么奖励点;我唯一想要实现的就是添加with关键字.)

vim

34
推荐指数
2
解决办法
8396
查看次数

正则表达式批量重命名OS X终端中的文件

我正在使用正则表达式批量重命名文件

s/123/onetwothree/g
Run Code Online (Sandbox Code Playgroud)

我记得我可以使用awk和sed与正则表达式,但无法弄清楚如何将它们一起管道以获得所需的输出.

regex macos shell awk sed

30
推荐指数
5
解决办法
2万
查看次数

什么是参数转发声明?

我以为我很熟悉C语法,直到我尝试编译以下代码:

void f(int i; double x)
{
}
Run Code Online (Sandbox Code Playgroud)

我期望编译器跳闸,但确实如此,但我没有收到错误消息:

test.c:1:14: error: parameter ‘i’ has just a forward declaration
Run Code Online (Sandbox Code Playgroud)

然后我试过了

void fun(int i; i)
{
}
Run Code Online (Sandbox Code Playgroud)

失败了

test.c:1:17: error: expected declaration specifiers or ‘...’ before ‘i’
Run Code Online (Sandbox Code Playgroud)

最后

void fun(int i; int i)
{
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这成功了!

我从未在现实世界的C代码中看到过这种语法.有什么用?

c parameters syntax forward-declaration

30
推荐指数
1
解决办法
2万
查看次数