1

ファイルを開き、フォーマットされたテキスト ファイル内の各行を反復するコードがあります。次のようなテキストがあります。

name.x00y00.whatever

x00y00 を検索して存在するかどうかを確認し、見つかったものを文字列にコピーします。問題は、数値が変化することです。常に「x」に続く 2 桁と「y」に続く 2 桁です。しかし、それらの数字が何であるかを予測する方法はありません。テキストの存在をワイルドカードで検索してコピーする最良の方法は何ですか?

私は正規表現にまったく慣れていないので、誰かが私を啓発してくれれば幸いです。

4

3 に答える 3

2

次のように実行できます。

import re
print re.findall(r'\.(x\d{2}y\d{2})\.', "name.x00y00.whatever")
# Prints ['x00y00']

namewhateverも変化する可能性があり、x00y00ピースは常にドットで区切られていると想定しています。

\.はドットに一致し、\d{2}「2 桁」を意味します。括弧は、それらが囲むマッチのピースをキャプチャします。

findall複数の一致がある場合に使用しています。

于 2013-06-07T17:59:20.730 に答える
1

このようなもの:

>>> import re
>>> strs= "name.x00y00.whatever"
>>> match = re.search(r'\.(x\d{2}y\d{2})\.',strs)#returns None if pattern is not found
>>> if match:               
...     print match.group(1)
...     
x00y00
于 2013-06-07T18:00:40.953 に答える
0

文字列に常に が含まれる場合は.、それを分割することもできます。

>>> s = 'name.x12345y34.foo.bar.zoo'
>>> s.split('.')[1]
'x12345y34'

ただし、これは形式が固定されていることを前提としています-常に2番目のセクションです。ただし、結果に数値が含まれることは保証されませんが、必須ではない場合があります。

于 2013-06-07T18:05:38.840 に答える