0

テキストからいくつかの値をtxtファイルにエクスポートしようとしています。私のテキストは次の形式です。

"a='one' b='2' c='3' a='two' b='8' c='3'"

キー「a」のすべての値をエクスポートしたい結果は次のようになります

one
two
4

5 に答える 5

3

他の答えはあなたの特定のケースでは正しいですが、後読み/先読みを使用した正規表現はより一般的な解決策だと思います。

import re

text = "a='one' b='2' c='3' a='two' b='8' c='3'"

expr = r"(?<=a=')[^']*(?=')"

matches = re.findall(expr,text)
for m in matches:
    print m  ##or whatever

これは、a= が先行する単一引用符の間の任意の式に一致します。つまり、a='xyz'、a='my#1.abcd'、および a='a=5%' はすべて一致します。

于 2012-08-20T09:28:34.947 に答える
0

私は再なしで解決策を与えるだろうと思った:

>>> text = "a='one' b='2' c='3' a='two' b='8' c='3'"
>>> step1 = text.split(" ")
>>> step1
["a='one'", "b='2'", "c='3'", "a='two'", "b='8'", "c='3'"]
>>> step2 = []
>>> for pair in step1:
    split_pair = pair.split("=")
    step2.append([split_pair[0],split_pair[1]]) 
>>> print step2
[['a', "'one'"], ['b', "'2'"], ['c', "'3'"], ['a', "'two'"], ['b', "'8'"], ['c', "'3'"]]
>>> results = []
>>> for split_pair in step2:
        if split_pair[0] == "a":
            results.append(split_pair[1])   
>>> results
["'one'", "'two'"]

最も洗練された方法ではありませんが、機能します。

于 2012-08-20T09:19:31.757 に答える
0

you can use something like this:

import re
r = re.compile(r"'([a-z]+)'")

f = open('input')
text = f.read()

m = r.finditer(text)

for mm in m:
    print mm.group(1)
于 2012-08-20T09:12:28.077 に答える