小编ale*_*cxe的帖子

XML Declaration standalone ="yes"lxml

我有一个xml我正在解析,进行一些更改并保存到一个新文件.它有<?xml version="1.0" encoding="utf-8" standalone="yes"?>我想保留的声明.当我保存我的新文件时,我失去了standalone="yes"一点.我该如何保管?这是我的代码:

templateXml = """<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<package>
  <provider>Some Data</provider>
  <studio_display_name>Some Other Data</studio_display_name>
</package>"""

from lxml import etree
tree = etree.fromstring(templateXml)

xmlFileOut = '/Users/User1/Desktop/Python/Done.xml'   

with open(xmlFileOut, "w") as f:
    f.write(etree.tostring(tree, pretty_print = True, xml_declaration = True, encoding='UTF-8'))
Run Code Online (Sandbox Code Playgroud)

python xml parsing lxml xml-parsing

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

如何在lxml中解析XML时不加载注释

我尝试使用lxml在Python中解析XML文件,如下所示:

objectify.parse(xmlPath, parserWithSchema)
Run Code Online (Sandbox Code Playgroud)

但XML文件可能包含奇怪的地方的评论:

<root>
    <text>Sam<!--comment-->ple text</text>
    <!--comment-->
    <float>1.2<!--comment-->3456</float>
</root>
Run Code Online (Sandbox Code Playgroud)

这是一种在解析之前不加载或删除注释的方法吗?

python xml lxml comments xml-parsing

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

非常慢的正则表达式搜索

我不确定我是否完全理解以下正则表达式搜索的内容:

>>> import re
>>> template = re.compile("(\w+)+\.")
>>> target = "a" * 30
>>> template.search(target)
Run Code Online (Sandbox Code Playgroud)

search()呼叫需要几分钟才能完成,CPU使用率达到100%.对于2.7.5和3.3.3 Python版本,该行为都是可重现的.

有趣的事实是,如果字符串的长度小于20-25个字符,那么很快就会search()返回.

怎么了?

python regex string performance

11
推荐指数
2
解决办法
939
查看次数

将捕获的组放在一行中

有一个已知的"模式"来获取捕获的组值,如果不匹配则有一个空字符串:

match = re.search('regex', 'text')
if match:
    value = match.group(1)
else:
    value = ""
Run Code Online (Sandbox Code Playgroud)

要么:

match = re.search('regex', 'text')
value = match.group(1) if match else ''
Run Code Online (Sandbox Code Playgroud)

有一种简单而pythonic的方法可以在一行中完成吗?

换句话说,如果没有找到捕获组,我可以提供默认值吗?


例如,我需要_key=字符串后面的文本中提取所有字母数字字符(和):

>>> import re
>>> PATTERN = re.compile('key=(\w+)')
>>> def find_text(text):
...     match = PATTERN.search(text)
...     return match.group(1) if match else ''
... 
>>> find_text('foo=bar,key=value,beer=pub')
'value'
>>> find_text('no match here')
''
Run Code Online (Sandbox Code Playgroud)

有可能find_text()成为一个班轮吗?

这只是一个例子,我正在寻找一种通用的方法.

python regex syntax

11
推荐指数
2
解决办法
3149
查看次数

为不同的功能分离**kwargs

给定一个更高阶函数,它将多个函数作为参数,该函数如何将关键字参数传递给函数参数?

def eat(food='eggs', how_much=1):
    print(food * how_much)


def parrot_is(state='dead'):
    print("This parrot is %s." % state)


def skit(*lines, **kwargs):
    for line in lines:
        line(**kwargs)

skit(eat, parrot_is)  # eggs \n This parrot is dead.
skit(eat, parrot_is, food='spam', how_much=50, state='an ex-parrot') # error
Run Code Online (Sandbox Code Playgroud)

state不是关键字arg,eat那么skit如何才能传递与其调用的函数相关的关键字args?

python function kwargs keyword-argument

11
推荐指数
2
解决办法
2230
查看次数

BeautifulSoup4:选择属性不等于x的元素

我想做这样的事情:

soup.find_all('td', attrs!={"class":"foo"})
Run Code Online (Sandbox Code Playgroud)

我想找到所有没有foo类的td.
显然以上不起作用,有什么作用?

html python beautifulsoup html-parsing python-2.7

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

用于Angular 1.2的debugInfoEnabled

Angular 1.3引入了一种新debugInfoEnabled()方法,如果false应用程序配置函数中调用,它可以提高性能:

myApp.config(['$compileProvider', function ($compileProvider) {
    $compileProvider.debugInfoEnabled(false);
}]);
Run Code Online (Sandbox Code Playgroud)

此外,Angular 1.3放弃了IE8的支持.这对我来说是一个问题,我的应用程序必须在IE8上运行.因此,我无法升级到角度1.3并且必须使用1.2.

有没有办法用角度1.2实现相同的功能?

特别是,至少有一部分debugInfoEnabled()做了:

  • 在创建新范围时阻止创建ng-scope/ ng-isolated-scopeCSS类
  • 不要将绑定数据和ng-class CSS类附加到具有ngBind,ngBindHtml或{{...}}插值的元素

作为一种可能的选择,我可以分叉angularjs存储库并将该功能反向回1.2.然后,使用fork维护来自上游的更新.

非常感谢任何指针.

javascript debugging backport internet-explorer-8 angularjs

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

用量角器测试悬停状态的变化

无论我做什么,我都无法通过量角器测试获得悬停状态.以下代码是半功能的..

  • 在Firefox中运行良好
  • 仅当我使用Chrome滚动区域进入视图时才有效.
  • Phantom JS失败了

obj
  .getCssValue('color')
  .then(function (color1) {
    browser
      .actions()
      .mouseMove(obj)
      .perform()
      .then(function () {
        obj
          .getCssValue('color')
          .then(function (color2) {
            expect(color1)
              .not
              .toEqual(color2);
          });
      });
Run Code Online (Sandbox Code Playgroud)

javascript selenium end-to-end selenium-webdriver protractor

11
推荐指数
2
解决办法
3972
查看次数

量角器中的RGB/RGBA颜色值

故事:

在我们的测试代码库中的几个地方,我们断言不同的CSS值等于期望值.通常情况下,这是一个color,background-color,font相关的样式属性,或cursor.这个问题是关于处理颜色.

以下是当前通过的示例工作测试:

describe("AngularJS home page", function () {
    beforeEach(function () {
        browser.get("https://angularjs.org/");
    });

    it("should show a blue Download button", function () {
        var downloadButton = element(by.partialLinkText("Download"));

        expect(downloadButton.getCssValue("background-color")).toEqual("rgba(0, 116, 204, 1)");
    });
});
Run Code Online (Sandbox Code Playgroud)

它检查AngularJS网站上的"下载"按钮是否具有0, 116, 204, 1RGBA值.

现在,如果颜色发生变化,测试将失败,例如:

Expected 'rgba(0, 116, 204, 1)' to equal 'rgba(255, 116, 204, 1)'.
Run Code Online (Sandbox Code Playgroud)

问题:

  • 正如您所看到的,首先,期望本身并不可读.除非我们在其附近发表评论,否则我们期望看到的颜色并不明显.

  • 此外,错误消息不提供信息.目前还不清楚实际的颜色是什么,我们期望看到什么颜色.

问题:

是否有可能改进测试本身和错误消息,使其更具可读性和信息性,并且操作颜色名称而不是颜色RGB/RGBA值

期望的期望:

expect(downloadButton).toHaveBackgroundColor("midnight blue");
Run Code Online (Sandbox Code Playgroud)

所需的错误消息:

Expect 'blue' to equal 'black'
Expect 'dark grey' …
Run Code Online (Sandbox Code Playgroud)

javascript css rgba jasmine protractor

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

向上滚动页面到selenium顶部

如何将网页滚动到页面顶部.

我知道滚动页面到底部是:

window.scrollTo(0,document.body.scrollHeight)
Run Code Online (Sandbox Code Playgroud)

就像那样可以将页面滚动到顶部

selenium selenium-webdriver

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