我有一个带有版本号的字符串。我想从这段代码中读取版本号,这样我就可以将它与我正在使用的其他代码进行比较。我在下面完成了代码,但无法正常工作,有人能看出问题所在吗?
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))
这不会创建我想要的列表,但它允许我比较这 2 个值。
感谢所有的帮助。
最佳答案
为什么要使用正则表达式?我应该使用 split(' ') 并在 'version' 旁边使用 value,或者更简单:
print results.split(' ')[5]
如果你必须使用正则表达式,那么试试:
rx = re.compile('version\s+([\d.]+)\s+')
rxx = rx.search(results)
if rxx:
print rxx.group(1)
关于python - 如何匹配字符串中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191202/