小编Mer*_*moz的帖子

Python:在文本中查找单词列表的最佳/有效方法?

我有一个大约300个单词的列表和大量的文本,我想扫描,知道每个单词出现的次数.

我正在使用python中的re模块:

for word in list_word:
    search = re.compile(r"""(\s|,)(%s).?(\s|,|\.|\))""" % word)
    occurrences = search.subn("", text)[1]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更高效或更优雅的方式来做到这一点?

python regex

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

在django中使用gravatar

我愿意在我的django app中使用gravatars.在应用程序中,cw我创建了一个templatetags具有以下架构的目录:

cw/
    templatetags/
         __init.py__
         gravatar.py
    views.py
    ...
Run Code Online (Sandbox Code Playgroud)

gravatar.py包含

from django import template
import urllib, hashlib

register = template.Library()

class GravatarUrlNode(template.Node):
def __init__(self, email):
    self.email = template.Variable(email)

def render(self, context):
    try:
        email = self.email.resolve(context)
    except template.VariableDoesNotExist:
        return ''

    default = "/site_media/img/defaultavatar.jpg"
    size = 40

    gravatar_url = "http://www.gravatar.com/avatar/" + hashlib.md5(email.lower()).hexdigest() + "?"
    gravatar_url += urllib.urlencode({'d':default, 's':str(size)})

    return gravatar_url

@register.tag
def gravatar_url(parser, token):
    try:
        tag_name, email = token.split_contents()

    except ValueError:
        raise template.TemplateSyntaxError, "%r tag …
Run Code Online (Sandbox Code Playgroud)

django gravatar django-templates

6
推荐指数
2
解决办法
1820
查看次数

igraph:为什么add_edge函数对add_edges这么慢?

我很惊讶:

import igraph
import random, time
start_time = time.time()
G = igraph.Graph(directed = True)
G.add_vertices(10000)
for i in range(30000):
   G.add_edge(random.randint(0,9999), random.randint(0,9999))
print "done in " + str(int(time.time() - start_time)) + " seconds"
Run Code Online (Sandbox Code Playgroud)

返回在63秒内完成

import igraph
import random, time
start_time = time.time()
G = igraph.Graph(directed = True)
G.add_vertices(10000)
edges = []
for i in range(30000):
    edges += [(random.randint(0,9999), random.randint(0,9999))]
G.add_edges(edges)
print "done in " + str(int(time.time() - start_time)) + " seconds"
Run Code Online (Sandbox Code Playgroud)

在0秒内完成返回.项目中有人知道为什么吗?

python igraph

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

将matlab翻译为python/numpy

我正在寻找一个Matlab到Python的自动代码转换器.我下载并安装了LiberMate,但它没有在任何地方记录,我无法使其工作.

以前有人处理过这种挑战吗?欢迎任何建议.

python matlab numpy scipy code-translation

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

Flask:使用 app 作为属性并访问装饰器

使用 python flask 模块,我想要

app = flask.Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

作为类的属性:

class Handler(object):
    def __init__(self):
        self.datastores = {}
        self.websocket_queue = gevent.queue.JoinableQueue()
        self.app = flask.Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

问题是如何访问装饰器呢?

    @self.app.route('/socket.io/<path:remaining>')
    def socketio(self, remaining):
Run Code Online (Sandbox Code Playgroud)

这会产生错误NameError: name 'self' is not defined 谢谢

python flask

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

Django 以 editprofile 形式传递 request.POST 和 request.FILES

我有一个观点,使用户可以编辑自己的个人资料(常用名,用户名等),并包含在一个图像ÌmageField中的UserProfile

@login_required
def editprofile(request):
        user = request.user
        if request.method == 'POST':
                edit_form = EditProfileForm(data = request.POST, user = user)
                if edit_form.is_valid():
                        user = edit_form.save()
                        request.user.message_set.create(message='Votre profil a été modifié.')
                        return HttpResponseRedirect('/')
        else:
                dict = {'first_name':user.first_name, 'last_name':user.last_name, 'email':user.email, 'username':user.username}
                edit_form = EditProfileForm(user = user, data = dict)
        tpl_dict = {'form' : edit_form}
        return render_to_response('editprofile.html', tpl_dict, RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

形式是:

class EditProfileForm(forms.Form):
    first_name = forms.CharField(max_length = 100, required=False)
    last_name = forms.CharField(max_length = 100, required=False)
    email = forms.EmailField()
    username = forms.CharField(max_length …
Run Code Online (Sandbox Code Playgroud)

django request django-forms

3
推荐指数
1
解决办法
5504
查看次数

Numpy矩阵通过副本修改

在带有numpy 1.5.1的python 2.7.1中:

import numpy as np

B = np.matrix([[-float('inf'), 0], [0., 1]])
print B
Bm = B[1:, :]
Bm[:, 1] = float('inf')
print B
Run Code Online (Sandbox Code Playgroud)

回报

[[-inf   0.]
 [  0.   1.]]
[[-inf   0.]
 [  0.  inf]]
Run Code Online (Sandbox Code Playgroud)

这是非常意外的,因为我认为Bm是一个副本(如在这个问题中).

任何帮助搞清楚这一点将不胜感激.

python numpy

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

python regex:用一个sub替换地址中的<number> st,<number> nd,<number>等

我有许多地址,如"东19街"或"西141街",我想在一次调用re.sub.中删除"th"和"st".

re.sub("(\d+)st|(\d+)nd|(\d+)rd|(\d+)th", "g<1>", "East 19th Street")
Run Code Online (Sandbox Code Playgroud)

不起作用,因为它并不总是被捕获的第一个gorup

我可以链接潜艇,但它很脏.帮助赞赏

python regex

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

如何知道在ipython下运行哪个python?

我的计算机上安装了几个版本的python:

$ which ipython
/usr/local/share/python/ipython
$ ipython
Python 2.7.3 (default, Nov 28 2012, 13:43:07) 

$ which python
/usr/bin/python
$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
Run Code Online (Sandbox Code Playgroud)

我想找到在我的ipython下运行的python bin.谢谢你的帮助

python ipython

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

Django:访问模板中的一对一字段

我的模型UserProfile包含一个OneToOneField名为的类Info:

class UserProfile(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    info = models.OneToOneField(Info, null = True, blank= True)
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我可以访问配置文件

{{user.get_profile}}
Run Code Online (Sandbox Code Playgroud)

如何访问Info?我试过了

{{user.get_profile.info.photo.url}}
Run Code Online (Sandbox Code Playgroud)

没有成功.

django django-templates

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

Django:通过邮件记录或发送错误

我想知道是否有一种简单的方法来配置django,以便调试模式的错误页面通过邮件发送给管理员.

使用日志记录会更好,但如果由django本身引发(广告不是您的观点之一),如何向记录器添加错误?

我检查了开发版本日志工具,但我正在运行Django 1.2.

任何建议表示赞赏.

django logging

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

scala中的线程安全进度指示器

在scala中想象你有一个很长的列表,你映射一个函数,对每个元素进行独立的操作:

val myList = List(....)
def fct(...) = {...}

myList.map(elem => fct(elem))
Run Code Online (Sandbox Code Playgroud)

由于fct只使用val和不可变操作,因此可以很容易地并行化

myList.par.map(elem => fct(elem))
Run Code Online (Sandbox Code Playgroud)

for:

for(elem <- myList) {
    fct(elem)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在命令中有一个进度条,显示我们在列表中的级别.我想到了类似的东西:

var i = o 
Run Code Online (Sandbox Code Playgroud)

在循环之前和内部

i += 1
print(i + (" "*100) + "\r") 
Run Code Online (Sandbox Code Playgroud)

但这会破坏并行化的可能性.

parallel-processing scala progress-bar

0
推荐指数
1
解决办法
572
查看次数