小编Man*_*ert的帖子

将JSON对象传递给包含请求的URL

所以,我想使用Kenneth的优秀请求模块.在尝试使用Freebase API时偶然发现了这个问题.

基本上,他们的API看起来像这样:

https://www.googleapis.com/freebase/v1/mqlread?query=...
Run Code Online (Sandbox Code Playgroud)

作为一个查询,他们期望一个JSON对象,这里将返回一个葡萄酒列表及其国家和酒精百分比:

[{
  "country":       null,
  "name":          null,
  "percentage_alcohol": null,
  "percentage_alcohol>": 0,
  "type":          "/food/wine"
}]?
Run Code Online (Sandbox Code Playgroud)

当然,在将它传递给URL之前,我们必须逃避这一点,所以实际的查询将如下所示:

 fullurl = 'https://www.googleapis.com/freebase/v1/mqlread?query=%5B%7B%22percentage_alcohol%3E%22%3A+0%2C+%22country%22%3A+null%2C+%22type%22%3A+%22%2Ffood%2Fwine%22%2C+%22name%22%3A+null%2C+%22percentage_alcohol%22%3A+null%7D%5D'
Run Code Online (Sandbox Code Playgroud)

现在,

r = requests.get(fullurl)
print r.status_code
>>> 400
Run Code Online (Sandbox Code Playgroud)

因为该网站声称它无法解析查询.

r2 = urllib2.urlopen(fullurl)
print r2.getcode()
>>> 200
Run Code Online (Sandbox Code Playgroud)

没问题,我得到了适当的回报.有趣的是,

# This is the url of our requests.get request
print urllib2.urlopen(r.url).getcode() 
>>> 200
Run Code Online (Sandbox Code Playgroud)

为什么?我使用模块错了吗?或者它是一个错误requests

python freebase urllib2

6
推荐指数
1
解决办法
3626
查看次数

QListView中的自定义项

我(非常)对PyQT和QT很新,并且必须快速设计一个与现代双窗格邮件应用程序大致相似的用户界面:留下一个邮件列表,一个编辑器.我想提供一些信息,而不仅仅是一个字符串来显示QListView- 基本上是粗体文本中的项目名称,下面两行描述不同的样式,左上角是一组标记样徽章.此外,列表必须每隔几秒左右更新一次(可能只更改很少的项目),所以我不想每次都重写数据.

从我在各种手册和教程中阅读的内容来看,有不同的方法可以实现,并且我不确定最常用的方法是什么(其他人在编写核心应用程序后必须使用代码) - 你会使用对象和方法 - QListView或者QListWidget,然后继承子类QAbstractListModel或者QStandardItemModel......?

python pyqt pyqt4

5
推荐指数
1
解决办法
7754
查看次数

在python中计算图像的特征向量

我正在尝试将2D高斯拟合到图像中.噪音非常低,所以我的尝试是旋转图像,使两个主轴不共同变化,找出最大值并计算两个维度的标准偏差.选择的武器是python.

2d或多或少的高斯分布

然而,我一直在寻找图像的特征向量 - numpy.linalg.py假定离散数据点.我想过将这个图像作为一个概率分布,对几千个点进行采样,然后根据该分布计算特征向量,但我确信必须有一种找到特征向量的方法(即,半主和半 - 直接来自该图像的高斯椭圆的短轴.有任何想法吗?

非常感谢 :)

python numpy image-processing eigenvector

5
推荐指数
1
解决办法
5532
查看次数

CSS 3D变换使得给定边长的梯形

我有一个给定尺寸的元素(比方说,100x300像素)生活在一个相同高度和可变宽度的容器中,我想要在拾取容器时使用rotateX周围的变换,这样看起来图像的底线保持在它只是扩展来填充整个容器.-webkit-transform-origin: top center;-webkit-perspective

哇,这听起来令人困惑.这是一张图片:

梯形变形

所以基本上,我想创建一个具有固定上部宽度和可变下部宽度的梯形.然而,我无法弄清楚关系背后的数学... Javascript欢迎.以下示例适用于身体宽度为600px的情况:http://jsfiddle.net/24qrQ/

现在的任务是随着身体宽度不断改变透视和旋转.有任何想法吗?

javascript 3d transform css3

5
推荐指数
1
解决办法
1546
查看次数

在运行时更改蓝图或重新加载 Flask 应用程序

我正在编写一个支持插件架构的 Flask 应用程序。每个插件都位于一个单独的文件夹中,并且是一个模块,该模块至少具有一个类,该类是一个类的子类Plugin。出于安全原因,我不想在 Flask 应用程序最初运行时加载所有插件。相反,用户可以从 Flask 应用程序内启用插件。一旦他这样做了,我们就会在数据库中存储一份备忘录,将要加载的应用程序列入白名单。然而,我们仍然必须记住哪些插件被禁用以及这些插件的经过验证的视图。我通过为未启用且不加载任何自定义代码的插件创建一个虚拟类来实现此目的。

每个插件都有自己的蓝图。我们在加载插件时注册它。蓝图还定义了启用插件的路线。整个事情看起来是这样的:

for plugin_name in os.listdir(plugin_dir):
    plugin_path = os.path.join(plugin_paths, plugin_name)
    module_name = "plugins.{}.__init__".format(plugin_name)
    plugin_enabled = ask_db_whether_plugin_is_enabled(plugin_name)

    if os.path.isdir(plugin_path) and plugin_enabled:
        module = __import__(module_name)
        for plugin in load_plugins_from_module(module):
            app.register_blueprint(plugin.blueprint, url_prefix='/plugins')
    else:
        PluginCls = type(identifier, (Plugin, ), {})
        disabled_plugin = PluginCls()
        app.register_blueprint(disabled_plugin.blueprint, url_prefix='/plugins')
Run Code Online (Sandbox Code Playgroud)

load_plugins_from_module看起来像这样:

def load_plugins_from_module(module):
    def is_plugin(c):
        return inspect.isclass(c) and \
               issubclass(c, Plugin) and \
               c != Plugin

    for name, objects in inspect.getmembers(module, lambda c: inspect.ismodule(c)):
        for name, PluginCls in inspect.getmembers(objects, is_plugin): …
Run Code Online (Sandbox Code Playgroud)

python flask

5
推荐指数
1
解决办法
3121
查看次数

在lesscss mixin中连接任意数量的值

标准lesscss mixin:

.box-shadow(@val) {
    -moz-box-shadow: @val;
    box-shadow: @val;
}
Run Code Online (Sandbox Code Playgroud)

但是,在纯CSS中,我可以在一个元素上使用多个框阴影,例如

#myBox {
    box-shadow: inset 0px 1px 0px white, 0px 0px 5px #aaa;
    -moz-box-shadow: inset 0px 1px 0px white, 0px 0px 5px #aaa;
}
Run Code Online (Sandbox Code Playgroud)

为了ie.创建插入和发光效果.当然,我也想在这种情况下使用lesscss来修复供应商前缀诅咒,但是

.box-shadow() {
    -moz-box-shadow: @arguments;
    box-shadow: @arguments;
}

#myBox {
    .box-shadow(inset 0px 1px 0px white, 0px 0px 5px #aaa);
}
Run Code Online (Sandbox Code Playgroud)

将呈现

#myBox {
    box-shadow: inset 0px 1px 0px white 0px 0px 5px #aaa;
    -moz-box-shadow: inset 0px 1px 0px white 0px 0px 5px #aaa;
}
Run Code Online (Sandbox Code Playgroud)

(注意之后丢失的逗号white)!这在语法上是不正确的.有没有办法欺骗lesscss连接多个参数 …

css less

4
推荐指数
1
解决办法
1225
查看次数

在Python中动态添加属性到实例

我基本上有一个围绕词典列表的精心设计的包装器:

class Wrapper(object):
    def __init__(self, data):
        self.data = data

    def get(self, attr):
        return [d[attr] for d in self.data]
Run Code Online (Sandbox Code Playgroud)

所以,

Wrapper([{'x': 23}, {'x': 42}, {'x': 5}]).get('x')
Run Code Online (Sandbox Code Playgroud)

回报[23, 42, 5].现在我想分配速记属性,以便Wrapper.x返回相同的Wrapper.get('x').我不知道data先验中存在哪些键,所以我目前的方法是(改编自这个问题:

class Wrapper(object):
    def __init__(self, data):
        self.data = data
        for key in data[0].keys():
            setattr(self, key, property(lambda self: self.get(key)))
Run Code Online (Sandbox Code Playgroud)

因此,假设数据的所有元素都具有相同的密钥,并且它们在python中都是有效的标识符.但是,Wrapper(...).x返回,<property at 0x10a3d4838>我做错了什么?

python properties dynamic

4
推荐指数
1
解决办法
2432
查看次数

Python:做r = random_stuff()而不是meet_condition(r)

我经常需要随机生成具有某些约束的东西.在许多情况下,忽略生成中的约束更快,检查它们是否在之后得到满足,否则重做该过程.缺少do关键字,我经常写

r = random_stuff()
while not meets_condition(r):
    r = random_stuff()
Run Code Online (Sandbox Code Playgroud)

这有点难看,因为我有两次相同的代码行.我真正想要的是一个类似的结构

r = random_stuff() until meets_condition(r)
Run Code Online (Sandbox Code Playgroud)

类似于2.5中引入的三元运算符:

a = b if condition else c
Run Code Online (Sandbox Code Playgroud)

只是在执行语句的左侧之前评估此条件.有没有人建议设计模式(应该在Python 2.7中工作)来补救 - while构造内在的unpythonic丑陋?

python design-patterns do-while

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

在O(N)中无需替换的样本k随机排列

我需要一些列表的独特随机排列,而无需有效替换.我目前的做法:

total_permutations = math.factorial(len(population))
permutation_indices = random.sample(xrange(total_permutations), k)
k_permutations = [get_nth_permutation(population, x) for x in permutation_indices]
Run Code Online (Sandbox Code Playgroud)

get_nth_permutation它的确切含义在哪里,有效(意味着O(N)).但是,这只适用于len(population) <= 20,仅仅因为21!是如此长得令人难以理解xrange(math.factorial(21)):

OverflowError: Python int too large to convert to C long
Run Code Online (Sandbox Code Playgroud)

有没有更好的算法来采样k个唯一的排列而无需替换O(N)?

python algorithm permutation

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

确保列表中的所有dicts都具有相同的键

我有一个列表,如词典

[{'x': 42}, {'x': 23, 'y': 5}]
Run Code Online (Sandbox Code Playgroud)

并且想要确保所有dicts具有相同的键,None如果键不存在于原始字典中则值.所以上面的列表应该成为

[{'x': 42, 'y': None}, {'x': 23, 'y': 5}]
Run Code Online (Sandbox Code Playgroud)

什么是最美丽和pythonic的方式来做到这一点?目前的做法:

keys = reduce(lambda k, l: k.union(set(l)), [d.keys() for d in my_list], set())
new_list = [dict.fromkeys(keys, None) for i in xrange(len(my_list))]
for i, l in enumerate(my_list):
    new_list[i].update(l)
Run Code Online (Sandbox Code Playgroud)

但特别是前两行似乎有些笨拙.想法?

python dictionary list set

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