【发布时间】:2011-01-12 13:38:58
【问题描述】:
我有一个带有版本号的字符串。我想从此代码中读取版本号,以便将其与我正在使用的其他代码进行比较。我在下面完成了代码,但无法使其正常工作,任何人都可以看到问题吗?
print results
r = re.compile(r'(version\s*\s*)(\S+)')
for l in results:
m1 = r.match(l)
if m1:
ID=map(int,m1.group(2).split("."))
l = r.sub(r'\g<1>' + '.'.join(['%s' % (v) for v in ID]), l)
print ID
结果变量是:
Name Info Type Call version 1.0.40.437 Fri Oct 2 10:54:35 BST 2009
我这样做是因为我需要将 ID 中的数字分成组,因为我需要将 ID 中的第三个数字与另一个文件中 ID 中的第三个数字进行比较。
以下答案很有用,但我使用它的方式是读取文件并将所有数字取出并将它们放入列表中,因此我所要做的就是比较列表中的两个数字。抱歉,如果问题不清楚,但我不希望版本号是字符串。
好的,我对下面回答的代码进行了一些更改。代码如下:
version = re.compile('version\s+([\d.]+)\s+')
ID = version.search(results)
if ID:
value = ID.group(1).split('.')[2]
self.assertEqual(BUILD_ID[2], int(value))
这不会创建我想要的列表,但它允许我比较两个值。
感谢大家的帮助。
【问题讨论】:
-
什么是“结果”?如果它是一个字符串,你的循环会遍历每个字符,而不是每个单词。
-
\s*\s*等价于\s*。你想在那里做什么?