-1

REを使用した検索を使用する必要がある大きなファイルがあります

ファイルのサンプルは次のとおりです。

76360247039795},{"number":522141635,"catalog"

{"number"の後に表示される数字ストリームのみを印刷する必要があります。

このファイルは大きすぎてすべてを投稿できず、この文字列が約200回表示されます。だから私はREを使う必要があると思いますし、私の研究から、私が使う必要があるのは「見回す」と呼ばれるものだと思いますが、よくわかりません。

私は何年もの間これを試してきました助けてください

前もって感謝します

4

4 に答える 4

1
import re

with open('myLargeFile.txt', 'r') as myFile:
    numbersList = re.findall('{"number":(\d{9})', myFile.read(), re.DOTALL)
print numbersList

これにより、文字列の後に表示される9桁の数字のみを含むリストが作成されます{"number":

探している数字が9桁より多いか少ない場合は、代わりに次の正規表現を使用してください。

numbersList = re.findall('{"number":(\d{x,y})', myFile.read(), re.DOTALL)

、およびニーズに合わせてxとyを置き換えます。xは数字に許可されている最小の桁数を表し、yは最大の桁数を表します。たとえば、5〜9桁の数字をすべて検索する場合、正規表現は次のようになります。

numbersList = re.findall('{"number":(\d{5,9})', myFile.read(), re.DOTALL)
于 2013-03-09T19:20:12.567 に答える
1
import re
s = '76360247039795},{"number":522141635,"catalog"'
nl = re.findall('"number":(\d{9})', s)
于 2013-03-09T19:22:51.663 に答える
0

Pythonreモジュールを使用してこれを試して、パターンを定義し、文字列でパターンを見つけてくださいs

>>> s='76360247039795},{"number":522141635,"catalog"'
>>> import re
>>> re.findall('number":([0-9]+)', s) #this pattern 
['522141635']
>>> re.findall('number":([0-9]{9})', s) #or this pattern works.
['522141635']

(...)括弧内の正規表現に一致し、一致が実行された後にグループの内容を取得できます

于 2013-03-09T19:16:31.217 に答える
0

JSONデータの場合は、次のようにします。

import json
with open("filename.json") as f:
    data = json.loads(f.read())

ここで、ファイルが次のような辞書のリストであると仮定します。

[
    {"number": 522141635, "catalog": "..."},
    ....
    {"number": 999999999, "catalog": "..."}
]

番号を次のように印刷します。

for dictionary in data:
    print dictionary["number"]
于 2013-03-09T19:26:30.793 に答える