我有一段代码,它打开一个文件并迭代每一行在格式化的文本文件中会有一段这样的文本:
name.x00y00.whatever
查找x00y00是否存在,并将找到的内容复制到字符串中。问题是数字是变化的,x后面总是两位数,y后面总是两位数。但没有办法预测这些数字是多少。用通配符搜索文本的存在并复制它的最佳方法是什么?
我对正则表达式还是个新手,如果有人能指点一下我,我将不胜感激。
你可以这样做:
import re
print re.findall(r'.(xd{2}yd{2}).', "name.x00y00.whatever")
# Prints ['x00y00']
我假设name
和whatever
也可以改变,并且x00y00
块总是用点分隔。
.
匹配一个点,d{2}
表示"两位数字"。圆括号捕获它们所包围的匹配项。
我使用findall
,以防有多个匹配。
像这样:
>>> import re
>>> strs= "name.x00y00.whatever"
>>> match = re.search(r'.(xd{2}yd{2}).',strs)#returns None if pattern is not found
>>> if match:
... print match.group(1)
...
x00y00
如果字符串总是有.
,那么分割也会起作用:
>>> s = 'name.x12345y34.foo.bar.zoo'
>>> s.split('.')[1]
'x12345y34'
然而,这假设格式是固定的——它总是第二部分。它不能保证结果一定有数字,但也可能不是必需的。