1

写真のような書類があります。ファイル ID、作成者、および説明を取得したいと考えています。一部の fileid には、ファイルの説明がありません。しかし、一部のファイル ID (つまり、fileid=3) には、ファイルの説明があります。Pythonで説明を取得する方法を知りたいです。ありがとうございました。

start=re.compile('<file fileid=(\d+)\s*>')
end=re.compile('</file\s*>')

The Document starts from here:
--------------------------------------
<file fileid=11>
System File 765411
J.K
STAV December, 1959
</file>

<file fileid=12>
Batch File
James P.
STAV December, 1959
</file>

<file fileid=13>
Empty file
Person:Wolfe, P.
STAV December, 1959

This is a description of the empty file.
You need to put this file in the D:\location\systemB.
After putting the file to the location, the system will boot up.
Later, System B will refresh itself and show the output. 
</file>

<file fileid=14>
Nomal File
Mercy Lusia
STAV December, 1959
</file>
4

3 に答える 3

0

あなたはすでに 2 つの正規表現を書いているので、そこから始めましょう。

start.split(document)すると、それぞれがノードend.split(the_one)[0]の内容になりますfile

もっと簡単に言うと、開始正規表現と終了正規表現を(.*?)中間に a で結合するだけで、ファイル ノードを見つけてfileid値と内容を取得するパターンが得られます。ちょうどrfile.find_allfind_iter気になるものに到達したら停止できます。

または、もっと単純に、 を(\d+)ハードコードされた数字 (または を入力した{}もの) に置き換えて、関心のあるものだけを検索するパターンを使用するだけです.format

または、さらに単純に、正規表現を完全に削除し\s*>ます。最も外側にあり、あなたのコンテンツです。str.index</file><

ファイル全体に対して正規表現または単純な部分文字列検索を実行する方法を知りたい場合は、ファイルが十分に小さければ、readすべてをメモリに入れます。大きすぎる場合はmmap、ファイルを仮想ページ スペースに移動します。それでも大きすぎる場合(32 ビットの Python を使用していない限り、これはありそうにありませんが、そうなる可能性があります)、代わりに重複するバッファーを読み取る必要があります

于 2013-11-07T23:47:56.843 に答える