我正在考虑使用Beautiful Soup,一个用于HTML抓取的Python包.我应该看看还有其他HTML抓包吗?Python不是必需的,我实际上也有兴趣了解其他语言.
到目前为止的故事:
我们有一个问题是Ci++和++i C之间有性能差异吗?
C++的答案是什么?
UPSERT操作更新或在表中插入一行,具体取决于表是否已有一行与数据匹配:
if table t has a row exists that has key X:
update t set mystuff... where mykey=X
else
insert into t mystuff...
Run Code Online (Sandbox Code Playgroud)
由于Oracle没有特定的UPSERT语句,最好的方法是什么?
如果我的Python脚本至少需要特定版本的Python,那么在使用早期版本的Python启动脚本时,正确失败的正确方法是什么?
如何及早获得控制权以发出错误消息并退出?
例如,我有一个使用ternery操作符(2.5中的新增内容)和"with"块(2.6中的新增内容)的程序.我写了一个简单的小解释器 - 版本检查器例程,这是脚本会调用的第一件事......除了它没有那么远.相反,在我的例程被调用之前,脚本在python编译期间失败.因此,脚本的用户会看到一些非常模糊的synax错误回溯 - 这几乎需要专家推断它只是运行错误版本的Python的情况.
我知道如何检查Python的版本.问题是某些语法在旧版本的Python中是非法的.考虑这个程序:
import sys
if sys.version_info < (2, 4):
raise "must use python 2.5 or greater"
else:
# syntax error in 2.4, ok in 2.5
x = 1 if True else 2
print x
Run Code Online (Sandbox Code Playgroud)
在2.4下运行时,我想要这个结果
$ ~/bin/python2.4 tern.py
must use python 2.5 or greater
Run Code Online (Sandbox Code Playgroud)
而不是这个结果:
$ ~/bin/python2.4 tern.py
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
(引导同事.)
是否有一个内置函数,zip()但它会填充结果,以便结果列表的长度是最长输入的长度而不是最短的输入?
>>> a=['a1']
>>> b=['b1','b2','b3']
>>> c=['c1','c2']
>>> zip(a,b,c)
[('a1', 'b1', 'c1')]
>>> What command goes here?
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Run Code Online (Sandbox Code Playgroud) 做以下事情的最惯用方法是什么?
def xstr(s):
if s is None:
return ''
else:
return s
s = xstr(a) + xstr(b)
Run Code Online (Sandbox Code Playgroud)
更新:我正在使用Tryptich的建议来使用str(s),这使得这个例程适用于除字符串之外的其他类型.Vinay Sajip的lambda建议给我留下了深刻的印象,但我想保持我的代码相对简单.
def xstr(s):
if s is None:
return ''
else:
return str(s)
Run Code Online (Sandbox Code Playgroud) 我经常遇到以下问题.
我正在对需要数据库中的新表或列的项目进行一些更改.我进行数据库修改并继续我的工作.通常,我记得记下这些更改,以便可以在实时系统上复制它们.但是,我并不总是记得我改变了什么,我也不记得写下来.
所以,我推动了现场系统并得到一个很大的,明显的错误,没有NewColumnX,呃.
无论这可能不是这种情况的最佳实践,是否有数据库的版本控制系统?我不关心具体的数据库技术.我只是想知道一个是否存在.如果它恰好适用于MS SQL Server,那么很棒.
据我所知,外键(FK)用于帮助程序员以正确的方式操作数据.假设程序员实际上已经以正确的方式执行此操作,那么我们真的需要外键的概念吗?
外键还有其他用途吗?我在这里错过了什么吗?
每个串行设备显示两次/dev,一次为a tty.*,一次为a cu.*.
什么是cu.*设备?它与tty.*设备有何不同?
mh@maru ~ --> ls -l /dev/*.usbmodem621
crw-rw-rw- 1 root wheel 11, 5 Dec 25 18:00 /dev/cu.usbmodem621
crw-rw-rw- 1 root wheel 11, 4 Dec 25 18:00 /dev/tty.usbmodem621
Run Code Online (Sandbox Code Playgroud) 以高分辨率和可移植性为代码部分计时的最佳方法是什么?
/* Time from here */
ProcessIntenseFunction();
/* to here. */
printf("Time taken %d seconds %d milliseconds", sec, msec);
Run Code Online (Sandbox Code Playgroud)
是否有一个具有跨平台解决方案的标准库?
oracle ×3
python ×3
database ×2
performance ×2
sql ×2
c ×1
c++ ×1
foreign-keys ×1
html ×1
html-parsing ×1
idioms ×1
list ×1
macos ×1
merge ×1
oop ×1
serial-port ×1
string ×1
timer ×1
timing ×1
tty ×1
upsert ×1
version ×1
web-scraping ×1
zip ×1