2014-09-04 28 views
1

我需要能够从字符串中提取两个数字。我知道这两个数字(如果用一个字符串表示的话)是用' - '字符分隔的。如何从用负号分隔的字符串中提取数字

a='some text' 
b='some 0-376 text' 
c='some text.0-376.some text again' 
d='some text.0-376####.jpg' 

显然我需要在时尚简约但可靠的提取零0376。所以,代码的工作原理不管字符串中数字的位置:开始,中间或结束。应该不管提供恒定的结果是什么字周围数:字母,逗号,句号,美元或英镑符号等

回答

1

你可以实现使用正则表达式的期望:

import re 
regex = re.compile('([0-9]+)-([0-9]+)') 
match = regex.search('some text.0-376.some text again') 
if match: 
    numbers = [int(s) for s in match.groups()] 
    # numbers -> [0, 376] 
+0

这就提出了一个例外情况下'一个',但这可能是一件好事。 – 2014-09-04 22:33:07

+0

好点,加上'if'分句:) – isedev 2014-09-04 22:34:36

2

这听起来像是正则表达式工作:

import re 

a='some text' 
b='some 0-376 text' 
c='some text.0-376.some text again' 
d='some text.0-376####.jpg' 


for text in a, b, c, d: 
    match = re.search(r'(\d+)-(\d+)', text) 
    if match: 
     left, right = map(int, match.groups()) 
     print left, right 
+0

我会用一个列表理解代替'map' - 结果是那么列表是否正在运行的Python 2.x或3.x的 – isedev 2014-09-04 22:35:30

相关问题