我想写一个cmp样功能,比较两个版本号,并返回-1,0或1根据自己的比较valuses.
-1如果版本A早于版本B,则返回0如果版本A和B是等价的1如果版本A比版本B更新,则返回每个子部分应该被解释为一个数字,因此1.10> 1.1.
期望的功能输出是
mycmp('1.0', '1') == 0
mycmp('1.0.0', '1') == 0
mycmp('1', '1.0.0.1') == -1
mycmp('12.10', '11.0.0.0.0') == 1
...
Run Code Online (Sandbox Code Playgroud)
这是我的实施,开放改进:
def mycmp(version1, version2):
parts1 = [int(x) for x in version1.split('.')]
parts2 = [int(x) for x in version2.split('.')]
# fill up the shorter version with zeros ...
lendiff = len(parts1) - len(parts2)
if lendiff > 0:
parts2.extend([0] * lendiff)
elif lendiff < 0:
parts1.extend([0] …Run Code Online (Sandbox Code Playgroud) 我在$ resource GET请求中传递了一个url作为参数.Angular是对此参数进行编码的url,并且在$ httpBackend.expectGET方法中匹配请求是挑剔的.
我看到你可以使用正则表达式来匹配预期的请求,但无法让它工作.我想匹配资源位置,但与任何"uri"查询字符串参数值匹配.
按Ctrl
var resource = $resource('../api/lookup');
resource.get({ uri: "http://www.something.com" }, function (data) {
// do something
});
Run Code Online (Sandbox Code Playgroud)
测试
// mock out the $httpBackend response
$httpBackend.expectGET(/\.\.\/api\/lookup\?uri=.*/)).respond(200, { Response: "a response" });
// call my test method here
// ensure the $httpBackend work is done
$rootScope.$apply();
$httpBackend.flush();
// do assertions
Run Code Online (Sandbox Code Playgroud)
业力输出
Error: Unexpected request: GET ../api/lookup?uri=http%3A%2F%2Fwww.something.com
Expected GET /../api/lookup?uri=.*/
Run Code Online (Sandbox Code Playgroud)
谁能明白为什么我的正则表达式不匹配?
编辑
即使按照建议改进了正则表达式,我也无法使用' $ var '注入语法来实现这一点.我重写了测试,使用inject函数注入依赖项并确保我的测试安排的顺序是正确的.现在它的工作就像一个魅力!
使用Python2.4.5(不要问!)我想解析查询字符串并获得一个dict作为回报.我必须"手动"完成,如下所示吗?
>>> qs = 'first=1&second=4&third=3'
>>> d = dict([x.split("=") for x in qs.split("&")])
>>> d
{'second': '4', 'third': '3', 'first': '1'}
Run Code Online (Sandbox Code Playgroud)
没找到任何有用的方法urlparse.
我正在尝试web.py在GAE上运行应用程序.我希望像以下那样可能有用
import web
from google.appengine.ext.webapp.util import run_wsgi_app
[...]
def main():
app = web.application(urls, globals())
run_wsgi_app(app)
Run Code Online (Sandbox Code Playgroud)
但显然该app对象不符合run_wsgi_app函数的期望.错误消息说得好像app has no __call__ function,所以我尝试了传递app.run,但这也没有用.
我该如何拨打电话run_wsgi_app?
在Plone站点中,有一个名为"访问非活动门户内容"的权限.默认情况下,这将授予角色"Manager"和"Owner".
我想将此权限授予角色"编辑器",我知道我可以使用ZMI中"安全"选项卡中的相应复选框,但我想在某种安装脚本中以编程方式执行此操作.我该怎么办?
如果在__main__太空中使用,则存在奇怪的异常行为.
请考虑以下代码
a.py:
class A(object):
pass
if __name__ == "__main__":
from b import B
b = B()
print(isinstance(b, A))
Run Code Online (Sandbox Code Playgroud)
b.py
from a import A
class B(A):
pass
Run Code Online (Sandbox Code Playgroud)
main.py
from a import A
from b import B
b = B()
print(isinstance(b, A))
Run Code Online (Sandbox Code Playgroud)
当我跑步时main.py,我得到了True,正如预期的那样,但是当我跑步时a.py,我正在接受False.它看起来像是在那里A获得前缀的名称__main__.
我怎样才能获得一致的行为?我需要这个技巧导入Bin a.py来运行doctest文件a.py.
如何在Emacs中进行垂直拆分默认而不是水平拆分?
我的用例:我想从svn-repository比较一个Python文件和它自己的旧版本,我用C-x v ~命令做.不幸的是,这会在水平分割窗口时打开第二个缓冲区.垂直会好得多(至少对符合PEP-8的文件;)).
非常基本的问题,但很难进入可接受的形式:
我想通过每隔3个空格插入一个填充来转换字符串
"123456789" - >"123 456 789"
"abcdefgh" - >"abc def gh"
我的代码目前是
public String toSpaceSeparatedString(String s) {
if (s == null || s.length() < 3) {
return s;
}
StringBuilder builder = new StringBuilder();
int i;
for (i = 0; i < s.length()-3; i += 3) {
builder.append(s.substring(i, i+3));
builder.append(" ");
}
builder.append(s.substring(i, s.length()));
return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
谁能提供更优雅的解决方案?
我熟悉zope 2并且认为zope 3在很多方面都是优越的,就我使用它而言(主要是使用Five).
现在我正在考虑深入研究zope 3.您是否建议更进一步使用grok,如果是这样,为什么?(如果没有,为什么不呢?:)
我想从已经写入的日志文件中解析时间戳
datetime.datetime.now().strftime('%Y%m%d%H%M%S')
然后计算自此时间戳以来经过的秒数.
我知道我可以用它datetime.datetime.strptime来取回一个datetime物体,然后计算一个timedelta.问题是,该strptime函数已经在Python 2.5中引入,我使用的是Python2.4.4(在我的上下文中无法进行升级).
有什么简单的方法吗?
我们都是开发团队在Django网站上工作.最近我们开始zc.buildout在里面使用了virtualenv.我可以看到如何virtualenv通过沙盒环境来帮助您.创建沙箱后,可以简单地使用pip安装必要的包/鸡蛋.我读过pip可以加载需求文件中的所有鸡蛋.这让我质疑它的好处和附加功能zc.buildout.zc.buildout下载你在buildout.cfg文件中提到的鸡蛋,但正如我所写,你已经可以使用pip和需求文件.是否zc.buildout做更多的事情我失踪?我已经可以使用我的所有自动化Fabric.
我正在尝试将字符串中的整数列表扫描到数组中(或者,切片)
package main
import "fmt"
func main() {
var nums [5]int
n, _ := fmt.Sscan("1 2 3 4 5", &nums) // doesn't work
fmt.Println(nums)
}
Run Code Online (Sandbox Code Playgroud)
作为第二个参数,我需要传递什么才能Sscan使其工作?
我知道我可以通过nums[0], nums[1] ...等等,但我更喜欢一个论点.
以下发电机有什么问题?
for file in file_list:
fh = open(file, 'r')
while True :
yield fh.readline()
fh.close()
Run Code Online (Sandbox Code Playgroud)