从python中的字符串中提取特定数字后跟命令行参数变量

时间:2012-10-19 10:44:05

标签: python

首先我要说的不是这个:如何从look here ...中的字符串中获取整数值

我的问题是: mv = / dev / vg10 / lv10:cp:99 我需要提取 vg10 的“10”而不是[10]。 mv是一个字符串

我的最终输出应该只有10,应从 vg

中提取

我的python版本:Python 2.6.1

提前致谢..请帮帮我:(

3 个答案:

答案 0 :(得分:2)

你应该查看python的正则表达式模块。只需在脚本中“导入re”即可提供正则表达式功能。 顺便说一句,如果您只想要字符串“vg”后面的数字,那么下面的脚本应该可以解决问题。

import re
urString = "/dev/vg10/lv10:cp:99"
Matches = re.findall("vg[0-9]*", mv)
print Matches

现在匹配将包含一个包含所有vg'number'的列表。 [0-9] *表示任意次数的任何数字。再次解析它以获取它的数字。您应该阅读有关正则表达式的更多信这很有趣。

扩展答案以符合OP的要求:

In [445]: Matches
Out[445]: ['vg10']

In [446]: int(*re.findall(r'[0-9]+', Matches[0]))
Out[446]: 10

答案 1 :(得分:1)

你在说这个:

import re
mv = "/dev/vg10/lv10:cp:99"
print re.search('/dev/vg(\d+)', mv).groups()

或者如果vg可以是其他东西,但它总是你想要的第二个项目,你可以这样做:

print re.search('/dev/\w+(\d+)/lv10:cp:99', mv).groups()

答案 2 :(得分:0)

import re

mv =  '/dev/mapper/vg8-lv8-eSPAN_MAX_d4:eSPAN_MAX_d4:99'

print re.findall(r'(?<=vg)\d*', mv)