0

抽出する必要のある文字列を含む大きなファイルがいくつかあります。データは次のように設定されています。

"text":"string","token":"1357580140-7","display_token":0,"display_ttl":1357828250,"coeff2_ts":"2013-01-08","timestamp":1357845041}}

私はいくつかの調査を行い、REが最適であると判断しました。「テキスト」ビットではなく「文字列」を出力するだけです。必要な出力は「文字列」だけです

def regEx():
os.chdir("C:/Users/Luke/Desktop/FilesWithString")
files = os.listdir(".")
for x in files:
    re.search(r'(?<="text":)("[^"]+")',x).group(0)
4

3 に答える 3

2

後読みを使用できます。

your_string = '"text":"string"'
match = re.search(r'(?<=:)("[^"]+")',your_string)
if match:
    print match.group(0) #'"string"'

これは、の直後に二重引用符で囲まれたものをすべてキャプチャします:

JSONちなみに、更新された文字列を使用すると、 -または処理できるものに非常によく似ていますast.literal_eval。その場合は、これらのいずれかを使用して辞書に評価し、添え字を付けて文字列を取得することができます。

于 2013-02-07T14:11:21.653 に答える
1

JSON文字列があります。jsonモジュールを使用して、Python構造にデコードします。

import json

data = json.loads(inputstring)

print data['somekey']['token']
print data['somekey']['display_ttl']
于 2013-02-07T14:34:19.430 に答える
0

あなたは再なしでそれをはるかに速くすることができます:

s = '"text":"string"'
print s[7:]
>>> "string"

textパーツが異なる線に沿って変化する場合は、その長さを測定できます-コロンで線を分割し、最初の部分を取得することによって:

s = '"a text":"a string"'
s[len(s.split('":')[0]) + 2:]
>>> '"a string"'

または、さらに効率的に、index関数を使用します。

s = '"a text":"a string"'
s[s.index('":') + 2:]
>>> '"a string"'
于 2013-02-07T14:11:04.457 に答える