考虑如下字符串:
string = "<p>Hello World</p><a href="http://example.com">More Examples</a><a href="http://example2.com">Even More Examples</a>"
Run Code Online (Sandbox Code Playgroud)
我怎么能用Python在锚标记的href中提取网址?就像是:
>>> url = getURLs(string)
>>> url
['http://example.com', 'http://example2.com']
Run Code Online (Sandbox Code Playgroud)
谢谢!
在Python Selenium模块中,一旦我有了一个WebElement对象,我就可以获得它的任何属性的值get_attribute():
foo = elem.get_attribute('href')
Run Code Online (Sandbox Code Playgroud)
如果名为'href'不存在的属性,None则返回.
我的问题是,如何获得元素具有的所有属性的列表?似乎没有get_attributes()或get_attribute_names()方法.
我正在使用Selenium模块的2.44.0版本用于Python.
在python 2.6.6中,我如何捕获异常的错误消息.
IE:
response_dict = {} # contains info to response under a django view.
try:
plan.save()
response_dict.update({'plan_id': plan.id})
except IntegrityError, e: #contains my own custom exception raising with custom messages.
response_dict.update({'error': e})
return HttpResponse(json.dumps(response_dict), mimetype="application/json")
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我明白了:
IntegrityError('Conflicts are not allowed.',) is not JSON serializable
Run Code Online (Sandbox Code Playgroud) 我之前的一篇学术课程中有以下关于二阶树(不是BST)的有序遍历(它们也称之为pancaking)的文本:
有序树遍历
在树的外面画一条线.从根的左侧开始,绕过树的外部,最后到根的右侧.尽可能靠近树,但不要越过树.(想想树 - 它的分支和节点 - 作为一个坚实的障碍.)节点的顺序是这条线在它们下面经过的顺序.如果您不确定何时"在节点下面",请记住"左侧"节点始终位于第一位.
这是使用的示例(从下面略微不同的树)

但是,当我在谷歌搜索时,我得到一个相互矛盾的定义.例如维基百科的例子:
![]()
顺序遍历序列:A,B,C,D,E,F,G,H,I(左子节点,根节点,右节点)
但根据(我的理解)定义#1,这应该是
A,B,D,C,E,F,G,I,H
任何人都可以澄清哪个定义是正确的?它们可能都描述了不同的遍历方法,但碰巧使用相同的名称.我很难相信同行评审的学术文本是错误的,但不能确定.
我正在考虑使用pipenv并在这里的文档中
https://pipenv.readthedocs.io/en/latest/basics.html#importing-from-requirements-txt
它说(强调我的)
请注意,在导入需求文件时,它们通常会固定版本号,这可能是您不想要的
为什么是这样?
据我所知,Pipfile.lock文件将存储我安装的依赖项的特定版本和哈希,但我不希望能够看到Pipfile中安装的特定版本?(当我使用requirements.txt时,我的方式相同?)
在https://v4-alpha.getbootstrap.com/layout/grid/#equal-width-multi-row的Bootstrap文档中的这个页面上,他们给出了这个例子:
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="w-100"></div>
<div class="col">col</div>
<div class="col">col</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这将创建两行,每行包含两个大小相等的列.但是,您只需创建两行即可实现此目的:
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
</div>
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用.w-100CSS类和仅创建两行之间有什么区别吗?
在Python 3中,我从交互式shell运行以下命令:
>>> import tkinter
>>> type(tkinter.Tk())
<class 'tkinter.Tk'>
>>> type(tkinter.Toplevel())
<class 'tkinter.Toplevel'>
Run Code Online (Sandbox Code Playgroud)
这两个都创建了单独的窗口.我假设tkinter.Tk()返回tkinter应用程序的"主"窗口,而任何其他窗口应该创建tkinter.Toplevel().
我注意到如果你关闭tkinter.Tk()窗户,两个窗户都会关闭.此外,如果您在tkinter.Toplevel()没有调用的情况下调用tkinter.Tk(),则会创建两个窗口(其中一个窗口是"主"窗口,当关闭时,它也将关闭Toplevel窗口).
这准确吗?我还应该关注其他任何不同之处吗?
我已经编写了hello.py(一个基本的“ hello world”程序),并希望能够通过按Win键打开Dash,然后键入脚本名称(或类似名称)来在Ubuntu计算机上快速运行它。对此)。
但是,当我在Dash中键入hello.py时,它将在编辑器中打开文件而不是执行它。我添加了一个shebang行#!/usr/bin/env python3并运行chmod u+x hello.py,它仍然在编辑器中打开文件。
我尝试创建一个将运行Python脚本的hello.sh shell脚本,但是当我在Dash中键入其名称时,shell脚本也会在编辑器中打开。
另外,我尝试按Alt-F2组合键,它会弹出类似Windows的Win-R的字样,但是当我输入python3 hello.py该字词时,它不会弹出显示任何print()输出的终端窗口。
是否可以通过在Dash中键入其名称来运行Python脚本?还是有另一种简单的方法来运行任意Python脚本?本质上,我想要的是类似Windows的运行对话框,当您按下Win-R时会出现该对话框,该对话框可以在系统PATH上运行任何程序。
如何通过Python脚本最小化/最大化macOS中的窗口?在Windows上,有一个win32 api(该ShowWindow()函数)可以执行此操作。我想要等效的macOS。我希望脚本能够从其标题中找到一个窗口,然后将其最小化或最大化。
这可能吗?我认为我需要为此使用pyobjc模块。
Python 格式化工具 Black 是否有一个选项可以撤消它在运行后所做的格式化更改?还是假设我正在使用源代码控制并制作自己的备份?这是截至 2019 年 12 月和黑色版本 19.3b0。
python ×8
binary-tree ×1
bootstrap-4 ×1
cocoa ×1
django ×1
macos ×1
pip ×1
pipenv ×1
pyobjc ×1
python-3.x ×1
python-black ×1
regex ×1
selenium ×1
tkinter ×1
ubuntu ×1
url ×1