35

ユーザーが入力したテキストから情報を抽出したい。次のように入力したとします。

SetVariables "a" "b" "c"

最初の引用セットの間で情報を抽出するにはどうすればよいですか?それでは2番目?それでは3番目?

4

3 に答える 3

55
>>> import re
>>> re.findall('"([^"]*)"', 'SetVariables "a" "b" "c" ')
['a', 'b', 'c']
于 2010-01-16T05:58:24.207 に答える
38

あなたはそれにstring.split()をすることができます。文字列が引用符(つまり、偶数の引用符)で適切にフォーマットされている場合、リスト内のすべての奇数値には、引用符の間にある要素が含まれます。

>>> s = 'SetVariables "a" "b" "c"';
>>> l = s.split('"')[1::2]; # the [1::2] is a slicing which extracts odd values
>>> print l;
['a', 'b', 'c']
>>> print l[2]; # to show you how to extract individual items from output
c

これは、正規表現よりも高速なアプローチでもあります。timeitモジュールを使用すると、このコードの速度は約4倍速くなります。

% python timeit.py -s 'import re' 're.findall("\"([^\"]*)\"", "SetVariables \"a\" \"b\" \"c\" ")'
1000000 loops, best of 3: 2.37 usec per loop

% python timeit.py '"SetVariables \"a\" \"b\" \"c\"".split("\"")[1::2];'
1000000 loops, best of 3: 0.569 usec per loop
于 2010-01-16T06:16:45.327 に答える
15

正規表現はこれが得意です:

import re
quoted = re.compile('"[^"]*"')
for value in quoted.findall(userInputtedText):
    print value
于 2010-01-16T05:58:28.980 に答える