小编Rya*_*axe的帖子

通过标签定制BeautifulSoup的美化

我想知道是否有可能使它prettify不会在特定标签上创建新行.

我想这样做,span以及a标签不会拆分,例如:

doc="""<div><div><span>a</span><span>b</span>
<a>link</a></div><a>link1</a><a>link2</a></div>"""

from bs4 import BeautifulSoup as BS
soup = BS(doc)
print soup.prettify()
Run Code Online (Sandbox Code Playgroud)

以下是我想要打印的内容:

<div>
    <div>
        <span>a</span><span>b</span>
        <a>link</a>
    </div>
    <a>link1</a><a>link2</a>
</div>
Run Code Online (Sandbox Code Playgroud)

但这是实际印刷的内容:

<div>
    <div>
        <span>
            a
        </span>
        <span>
            b
        </span>
        <a>
            link
        </a>
    </div>
    <a>
        link1
    </a>
    <a>
        link2
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

在新行上放置内联样式标记实际上会在它们之间添加空格,稍微改变实际页面的外观.我将链接到显示差异的两个jsfiddles:

新行上的锚标签

彼此相邻的锚标签

如果您想知道为什么这对BeautifulSoup很重要,那是因为我正在编写一个网页调试器,并且美化功能将非常有用(以及bs4中的其他内容).但如果我对文件进行美化,那么我就冒险改变一些事情.

那么,有没有办法自定义prettify功能,以便我可以设置它不分解某些标签?

html python beautifulsoup

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

按高度禁用textarea而不是字符

很多时候我们想限制用户可以写多少,但是这里我有一个特殊尺寸的盒子,它必须适合,所以我想禁用添加更多的字符,如果它超过特定的高度.这是我做的:

var over;
$('textarea').keypress(function(e){
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    var t = $(this).val();
    jQuery('<div/>', {
        style: "visibility:hidden",
        text: t,
        id: "test"
    }).appendTo('body');
    var h = $('#test').height();
    if(h >= 100){
        over = true;
    }
    else{
        over = false;
    }
    if(over){
        //code goes here
    }
    $('#test').remove();
});
Run Code Online (Sandbox Code Playgroud)

我从这里得到了限制代码(我的"代码在这里"评论),它几乎可以工作.

只有一个问题:

如果有人复制和粘贴,它可以放置多个字符,因此仍然超过限制.

我该如何解决这个问题?

的jsfiddle

html javascript jquery textarea

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

Jquery附加而不删除

所以我需要从特定类中获取内容并将其放在div中,我使用追加...我的问题是append删除了我追加的项目,我需要它留在那里,这是我的代码:

$(document).ready(function(){
    var $content = $('#popupcontent');
    var $window = $('#popupwindow');
    $('.open').click(function(){
        //alert('runnning');
        var a = $(this).contents('span');
        $content.append(a);
        $window.fadeIn(300);
    });
    $('.close').click(function(){
        //alert('running');
            var a = $content.contents('span');
        $window.fadeOut(300);
        $('#popupcontent span').remove();
    });
});
Run Code Online (Sandbox Code Playgroud)

所以,我怎么就能得到上述内容,点击后,从每一个.open span#popupcontentsID,而无需从移除.open类?

告诉你我的意思:JSFIDDLE

注意:第二次单击链接时,它不会附加任何内容,因为该内容已从该类中删除,这不是我想要的

注2:我不能只是简单地append替代remove$('.close').click功能,因为我无法检测到的哪个实例.open内容来自类.

javascript jquery append

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

永久删除python路径中的目录

我最近在我的python路径中添加了一些我不希望使用的东西:

export PYTHONPATH=$PYTHONPATH:/my/path
Run Code Online (Sandbox Code Playgroud)

您可以使用sys.path.remove删除路径中的某些内容,但它不是100%永久性的,就像我使用上面的命令行语句添加它一样.

如何从python路径中永久删除目录?

python macos command-line pythonpath

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

运行脚本时tmux分离

所以我有一个脚本,我想在我的服务器上运行,而不是让我烦恼.所以我认为我会在tmux窗口中运行服务器然后detach它就可以了,attach如果我想查看进度(这个脚本需要几天才能运行).

但是当我在tmux窗口中运行我的脚本时,我无法detatch在它运行时运行.有什么我做错了吗?如果这仍然存在,我怎么能分离?我觉得我对这里明显的解决方案一无所知.

terminal tmux

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

从x import y和import xy之间的差异

所以我很困惑,因为差异是......这里有一些代码可以显示我的困惑:

>>> import collections.OrderedDict as od
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named OrderedDict
>>> from collections import OrderedDict as od
>>> od
<class 'collections.OrderedDict'>
Run Code Online (Sandbox Code Playgroud)

说明:

import collections.OrderedDict没找到模块,却from collections import OrderedDict发现了吗?!这两个陈述有什么区别?

该类被读为collections.OrderedDict,所以我不明白为什么第一次尝试无法找到该模块

注意:

我只是以集合为例.我并没有特别寻找为什么我的例子采用了它对集合的方式,而是为了解释为什么不同的代码行实际上要求进口.如果您想包含错误的解释,请随意!谢谢!

python import

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

Django有时会发生错误

我现在很困惑.我在Django中运行一个脚本来创建一个假数据库,一遍又一遍地绕过相同的代码.当我收到以下错误时,我已经创建了超过2.5k的对象:

ProgrammingError: autocommit cannot be used inside a transaction
Run Code Online (Sandbox Code Playgroud)

我查了一下并得到了一张明显修复过的错误票,但那是普通版本,我使用的是Django 1.6.这是完整的追溯:

---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
<ipython-input-31-0597bce30f92> in <module>()
----> 1 make_listeners()

<ipython-input-29-5697f122e144> in make_listeners()
     28                         seed = random.randint(0,len(user_ids_copy)-1)
     29                         requested_user = user_ids_copy.pop(seed)
---> 30                         user.functions.listen_to(requested_user)
     31                         print i, user.pk, number_seed, original_seed
     32                         number_seed -= 1

.../models.py in listen_to(self, user_id)
    715                 except User.DoesNotExist:
    716                         return 'User DoesNotExist'
--> 717                 request = ListenerRequest.objects.get_or_create(user=requesting, user_requested=requester, is_active=True)
    718                 if not request[1]:
    719                         if request.is_accepted:

/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/models/manager.pyc in get_or_create(self, **kwargs)
    152
    153     def …
Run Code Online (Sandbox Code Playgroud)

python django error-handling

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

相当于Ipython笔记本中的raw_input

我只是搞乱了Ipython笔记本,我打算创建一个战舰游戏......不幸的是,我需要在代码中使用如下的行来制作这样的游戏:

move = raw_input("Where would you like to attack? ")
Run Code Online (Sandbox Code Playgroud)

Ipython笔记本不允许raw_input ...所以如何从其中一个玩家那里得到输入?我已经四处寻找,没有什么我能找到的直接答案,例如,不,你不能或是,这就是这样.谢谢.

python input ipython

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

list.reverse()不起作用

老实说,我只是不明白为什么会返回None而不是反向列表:

>>> l = range(10)
>>> print l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print l.reverse()
None
Run Code Online (Sandbox Code Playgroud)

为什么会这样?根据文件,我没有做错任何事.

python reverse list

8
推荐指数
3
解决办法
8164
查看次数

Python lambda if语句re.sub

所以我使用以下正则表达式来解析文本并从特定字典中获取信息:

re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1],text)
Run Code Online (Sandbox Code Playgroud)

我想要做的只是替换它取代它是一个单独的字典中的键.逻辑上它看起来像这样:

re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
Run Code Online (Sandbox Code Playgroud)

现在,如果我要运行以下命令,我会收到以下语法错误:

>>> re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
  File "<stdin>", line 1
    re.sub(r'(<Q\d+>)',lambda m: quotes[m.group(1)][1] if quotes[m.group(1)][1] in d,text)
                                                                                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我怎么才能这样替换?

python regex lambda replace

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