小编pem*_*ahl的帖子

如何过滤包含唯一数字的数字?

您有一个数字列表,并且您想要过滤掉那些包含唯一数字的数字,即每个数字只能在数字中出现一次.

积极的例子:

  • 985
  • 58293.6
  • 0.1246

反面例子:

  • 9585(5次出现两次)
  • 58293.666(6次发生3次)
  • 0.12461(1次出现两次)

你会怎么做?我自己的想法是将每个数字转换为字符串,然后检查由字符串的字符组成的集合的大小是否等于字符串的长度.像这样的东西:

def uniques(numbers):
    for number in numbers:
        str_number = str(number)
        if len(set(str_number)) == len(str_number):
            yield number

for i in uniques(xrange(1000, 1050)):
    print i

1023
1024
1025
1026
1027
1028
1029
1032
1034
1035
1036
1037
1038
1039
1042
1043
1045
1046
1047
1048
1049
Run Code Online (Sandbox Code Playgroud)

有没有办法在不首先将整数转换为字符串的情况下执行此操作?

python algorithm

9
推荐指数
2
解决办法
2234
查看次数

如何找出使用os.kill()后子进程何时终止?

我有一个Python程序(确切地说,一个Django应用程序),它使用启动子进程subprocess.Popen.由于我的应用程序的架构限制,我无法使用Popen.terminate()终止子Popen.poll()进程并检查进程何时终止.这是因为我无法在变量中保存对已启动子进程的引用.

相反,我必须在子进程启动时将进程id写入pid文件pidfile.当我想停止子进程时,我打开它pidfile并用os.kill(pid, signal.SIGTERM)它来阻止它.

我的问题是:如何确定子进程何时真正终止?使用signal.SIGTERM它需要大约1-2分钟才能在通话后终止os.kill().首先,我认为这os.waitpid()对于这项任务来说是正确的,但是当os.kill()它给我之后我称之为它OSError: [Errno 10] No child processes.

顺便说一句,我使用两种形式从HTML模板开始和停止子进程,程序逻辑在Django视图中.当我的应用程序处于调试模式时,异常会显示在我的浏览器中.知道我在view(python manage.py crawlwebpages)中调用的子进程本身调用另一个子进程,即Scrapy爬虫的一个实例,这可能也很重要.我写了pid这个Scrapy实例pidfile,这就是我想要终止的.

这是相关代码:

def process_main_page_forms(request):
    if request.method == 'POST':
        if request.POST['form-type'] == u'webpage-crawler-form':
            template_context = _crawl_webpage(request)

        elif request.POST['form-type'] == u'stop-crawler-form':
            template_context = _stop_crawler(request)
    else:
        template_context = {
            'webpage_crawler_form': WebPageCrawlerForm(),
            'stop_crawler_form': StopCrawlerForm()}

    return render(request, 'main.html', template_context)

def _crawl_webpage(request):
    webpage_crawler_form = …
Run Code Online (Sandbox Code Playgroud)

python django subprocess

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

如何在Scrapy CrawlSpider中访问特定的start_url?

我正在使用Scrapy,特别是Scrapy的CrawlSpider类来抓取包含某些关键字的网页链接.我有一个很长的start_urls列表,它从一个连接到Django项目的SQLite数据库中获取它的条目.我想在此数据库中保存已删除的Web链接.

我有两个Django模型,一个用于开始网址http://example.com,一个用于刮网等链接http://example.com/website1,http://example.com/website2等等.所有抓取的网页链接都是start_urls列表中其中一个开始网址的子网站.

Web链接模型与起始URL模型具有多对一关系,即Web链接模型具有到开始URL模型的外键.为了妥善保存我刮的网页链接到数据库中,我需要告诉CrawlSpiderparse_item(),其起始URL刮下网站链接属于方法.我怎样才能做到这一点?Scrapy的DjangoItem类在这方面没有帮助,因为我仍然必须明确定义使用的启动URL.

换句话说,如何将当前使用的起始URL传递给parse_item()方法,以便我可以将其与适当的已删除Web链接一起保存到数据库中?有任何想法吗?提前致谢!

python django scrapy

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

为什么collections.Counter比''.count慢得多?

我有一个简单的任务:计算字符串中每个字母出现的次数.我已经使用了Counter()它,但是在一个论坛上,我看到使用dict()/的信息Counter()比使用string.count()每个字母慢得多.我认为它只会通过字符串进行一次,并且string.count()解决方案必须迭代四次(在这种情况下).为什么Counter()这么慢?

>>> timeit.timeit('x.count("A");x.count("G");x.count("C");x.count("T")', setup="x='GAAAAAGTCGTAGGGTTCCTTCACTCGAGGAATGCTGCGACAGTAAAGGAGGCCACGTGGTTGAGAGTTCCTAAGCATTCGTATGTACACCCGGACTCGATGCACTCAAACGTGCTTAAGGGTAAAGAAGGTCGAGAGGTATACTGGGGCACTCCCCTTAGAATTATATCTTGGTCAACTACAATATGGATGGAAATTCTAAGCCGAAAACGACCCGCTAGCGGATTGTGTATGTATCACAACGGTTTCGGTTCATACGCAAAATCATCCCATTTCAAGGCCACTCAAGGACATGACGCCGTGCAACTCCGAGGACATCCCTCAGCGATTGATGCAACCTGGTCATCTAATAATCCTTAGAACGGATGTGCCCTCTACTGGGAGAGCCGGCTAGACTGGCATCTCGCGTTGTTCGTACGAGCTCCGGGCGCCCGGGCGGTGTACGTTGATGTACAGCCTAAGAGCTTTCCACCTATGCTACGAACTAATTTCCCGTCCATCGTTCCTCGGACTGAGGTCAAAGTAACCCGGAAGTACATGGATCAGATACACTCACAGTCCCCTTTAATGACTGAGCTGGACGCTATTGATTGCTTTATAAGTGTTATGGTGAACTCGAAGACTTAGCTAGGAATTTCGCTATACCCGGGTAATGAGCTTAATACCTCACAGCATGTACGCTCTGAATATATGTAGCGATGCTAGCGGAACGTAAGCGTGAGCGTTATGCAGGGCTCCGCACCTCGTGGCCACTCGCCCAATGCCCGAGTTTTTGAGCAATGCCATGCCCTCCAGGTGAAGCGTGCTGAATATGTTCCGCCTCCGCACACCTACCCTACGGGCCTTACGCCATAGCTGAGGATACGCGAGTTGGTTAGCGATTACGTCATTCCAGGTGGTCGTTC'", number=10000)
0.07911698750407936
>>> timeit.timeit('Counter(x)', setup="from collections import Counter;x='GAAAAAGTCGTAGGGTTCCTTCACTCGAGGAATGCTGCGACAGTAAAGGAGGCCACGTGGTTGAGAGTTCCTAAGCATTCGTATGTACACCCGGACTCGATGCACTCAAACGTGCTTAAGGGTAAAGAAGGTCGAGAGGTATACTGGGGCACTCCCCTTAGAATTATATCTTGGTCAACTACAATATGGATGGAAATTCTAAGCCGAAAACGACCCGCTAGCGGATTGTGTATGTATCACAACGGTTTCGGTTCATACGCAAAATCATCCCATTTCAAGGCCACTCAAGGACATGACGCCGTGCAACTCCGAGGACATCCCTCAGCGATTGATGCAACCTGGTCATCTAATAATCCTTAGAACGGATGTGCCCTCTACTGGGAGAGCCGGCTAGACTGGCATCTCGCGTTGTTCGTACGAGCTCCGGGCGCCCGGGCGGTGTACGTTGATGTACAGCCTAAGAGCTTTCCACCTATGCTACGAACTAATTTCCCGTCCATCGTTCCTCGGACTGAGGTCAAAGTAACCCGGAAGTACATGGATCAGATACACTCACAGTCCCCTTTAATGACTGAGCTGGACGCTATTGATTGCTTTATAAGTGTTATGGTGAACTCGAAGACTTAGCTAGGAATTTCGCTATACCCGGGTAATGAGCTTAATACCTCACAGCATGTACGCTCTGAATATATGTAGCGATGCTAGCGGAACGTAAGCGTGAGCGTTATGCAGGGCTCCGCACCTCGTGGCCACTCGCCCAATGCCCGAGTTTTTGAGCAATGCCATGCCCTCCAGGTGAAGCGTGCTGAATATGTTCCGCCTCCGCACACCTACCCTACGGGCCTTACGCCATAGCTGAGGATACGCGAGTTGGTTAGCGATTACGTCATTCCAGGTGGTCGTTC'", number=10000)
2.1727447831030844
>>> 2.1727447831030844 / 0.07911698750407936
27.462430656767047
>>> 
Run Code Online (Sandbox Code Playgroud)

python performance counter

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

Django无空间模板标签的优点

我最近一直在想这个,Django的无空间模板标签的目的究竟是什么?

显然,它会从HTML标记中删除空格,但除此之外,它会增加页面加载的速度吗?

我的意思是,从html文件中删除空格是否有帮助?

django html5 django-templates

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

如何选择<input />字段周围的外部<div>?

我正在用jQuery做我的第一步,需要帮助为我的问题选择合适的选择器.我在Django模板中有以下HTML:

{% for field in form %}

    <div class="control-group">

        <label class="control-label" for="{{ field.label }}">{{ field.label }}</label>

        <div class="controls">

            {% if field.html_name == "field_1" %}

                <input class="input-xlarge" id="{{ field.label }}" type="text" name="{{ field.html_name }}" />

            {% elif field.html_name == "field_2" %}

                <input class="input-mini" id="{{ field.label }}" type="text" name="{{ field.html_name }}" />

            {% endif %}

        </div>

    </div>

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我需要对<input />我有以下选择器的字段做一些事情:

var $inputField1 = $('input[name="field_1"]');
var $inputField2 = $('input[name="field_2"]');
Run Code Online (Sandbox Code Playgroud)

我现在的问题是我需要能够<div class="control-group"></div>为特定<input />字段选择一个以改变它的类<div>.我怎么做?我需要父选择器 …

jquery jquery-selectors

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

如何在自定义日志处理程序中使用scrapy.log模块?

我一直在做一个Scrapy项目,到目前为止一切工作都很好。但是,我对Scrapy的日志记录配置可能性不满意。目前,我已经设置LOG_FILE = 'my_spider.log'settings.py我的项目。当我scrapy crawl my_spider在命令行上执行时,它将为整个爬网过程创建一个大日志文件。就我的目的而言,这是不可行的。

如何将Python的自定义日志处理程序与scrapy.log模块结合使用?特别是,我想使用Python,logging.handlers.RotatingFileHandler以便可以将日志数据拆分为几个小文件,而不必处理一个大文件。不幸的是,Scrapy的日志记录工具的文档不是很广泛。提前谢谢了!

python logging scrapy

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

如何使用python-requests和事件挂钩编写带有回调函数的Web爬虫?

我最近看了一下python-requests模块,我想用它编写一个简单的Web爬虫.给定一个开始URL的集合,我想编写一个Python函数,搜索其他URL的起始URL的网页内容,然后再次调用相同的函数作为回调,新的url作为输入,依此类推.起初,我认为事件挂钩将是用于此目的的正确工具,但其文档部分非常稀疏.在另一个页面上,我读到用于事件挂钩的函数必须返回传递给它们的同一个对象.因此事件挂钩显然不适用于此类任务.或者我只是没有把它弄好......

这是我想要做的一些伪代码(借用伪Scrapy蜘蛛):

import lxml.html    

def parse(response):
    for url in lxml.html.parse(response.url).xpath('//@href'):
        return Request(url=url, callback=parse)
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何使用python请求进行操作吗?事件挂钩是正确的工具还是我需要不同的东西?(注意:由于各种原因,Scrapy不适合我.)非常感谢!

python callback web-scraping python-requests

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

为什么os.kill(pid,0)返回None,尽管进程已终止?

这个问题与我的其他一个问题的答案有关.在这个答案中我被告知可以os.kill(pid, 0)用来检查子进程是否已经终止.如果它仍在运行,None则返回.如果它已经终止,OSError则会引发一个.到目前为止,这一直在正常工作,但现在我处于一种os.kill(pid, 0)仍然会返回的情况,None尽管子进程已经终止.进程ID为82430,在OSX上的活动监视器中,我找不到具有此ID的进程了.但是,当我打开Python shell并输入时os.kill(82430, 0),它仍会返回None.我不明白.

确切地说,我通过Ajax GET请求在Django视图中定期检查子进程的状态,如上所示.

Django在服务器端查看

def monitor_process(request):
    response_data = {}

    try:
        os.kill(int(request.GET['process_id']), 0)
        response_data['process_status'] = 'running'
    except OSError:
        response_data['process_status'] = 'finished'

    return HttpResponse(json.dumps(response_data), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

Ajax在客户端调用

var monitorProcess = function(processId) {

    $.ajax({
        dataType: 'json',
        type: 'GET',
        url: '/monitor_process/',
        data: {'process_id': processId},
        success: function(response) {

            if (response.process_status == 'running') {
                // Only this branch is always executed

                // ...
            }

            else if (response.process_status …
Run Code Online (Sandbox Code Playgroud)

python django

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

如何在我的情节周围放置更多空白?

我有一个图形,其中包含两行一列中的两个子图,如下所示:

fig, (ax1, ax2) = subplots(
    nrows=2,
    ncols=1,
)
Run Code Online (Sandbox Code Playgroud)

两个子图是饼图,因此我希望它们的轴是方形的。浏览API后,以下应该是调整每个子图轴的正确方法:

ax1.axis([0, 8, 0, 8])
ax2.axis([0, 8, 0, 8])
Run Code Online (Sandbox Code Playgroud)

然后我调整整个图形的大小。由于每个子图的宽度为 8 英寸,因此我将图形的宽度也设置为 8 英寸,将图形的高度设置为 2*8=16 英寸:

fig.set_size_inches(8, 16)
Run Code Online (Sandbox Code Playgroud)

这些设置会生成格式良好的饼图。但是,当我将图形保存到 PDF 文件时,饼图的一个楔形的标签在图形的右边缘被切断。保存的文件中的图形比预览窗口中的更窄。这就是为什么我想沿 x 轴加宽图形但保留子图的轴。如果我只是尝试通过执行以下操作来扩大数字:

fig.set_size_inches(12, 16)
Run Code Online (Sandbox Code Playgroud)

这个数字现在变得更宽了,但不幸的是,两个饼图也是如此。根据我的理解,axis()调用应该保留子图的尺寸,但它们没有。在阅读并尝试了很多关于 autoscale、xlim、ylim 等之后,我更加困惑,没有任何效果。

我只是想通过保留子图的尺寸来加宽图形,以便沿 x 轴有更多空白,并且可以在不切断标签的情况下显示标签。我怎么做?

python matplotlib

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