【发布时间】:2011-08-13 03:35:00
【问题描述】:
我有以下字符串:
text = 'adsfklaiin2007daf adf adflkajf;j 2008afadfkjkj'
我想回来:
2007 2008
在 Python 中有什么方法可以做到这一点?
【问题讨论】:
-
如果它是我想保留的特定文本怎么办。它可能是一个数字,但也可能不是。例如,如果我想保留 2007d 2008a 或其他特定的文本字符串怎么办?
我有以下字符串:
text = 'adsfklaiin2007daf adf adflkajf;j 2008afadfkjkj'
我想回来:
2007 2008
在 Python 中有什么方法可以做到这一点?
【问题讨论】:
这是正则表达式的经典案例。使用你得到的 re python 库:
re.findall('\d{4}', "yourStringHere")
这将返回在字符串中找到的所有四位数字项的列表。只需根据需要调整您的正则表达式。
【讨论】:
import re
num = re.compile('[\d]*')
numbers = [number for number in num.findall(text) if number]
['2007', '2008']
【讨论】:
>>> import re
>>> text = 'adsfklaiin2007daf adf adflkajf;j 2008afadfkjkj'
>>> re.sub("[^0-9]"," ",text)
' 2007 2008 '
我会把它留给你来格式化输出。
【讨论】:
text.translate(None, ''.join(chr(n) for n in range(0xFF) if chr(n) not in ' 01234567890')
您可能可以构建一个更好的字符表来跳过并使其更漂亮,但这是一般的想法。
【讨论】: