0

したがって、引用符内のテキストが特定の接尾辞で終わる場合を除いて、二重引用符で表示されているファイルからテキストを取得しようとしています。

たとえば、以下では、引用符で囲まれているVERで終わらないすべてのものを解析する必要があります。

入力例:

"GameVER": ["GM435615-IQR", "LG-QR435", "HG145-IR9", "WUT828-PQR10"] "VERIZON": ["GKSL42375834-45", "DG-67498", "GF4564", "HFJ-88.8.98"]

出力:

GM435615-IQR
LG-QR435
HG145-IR9WUT828-PQR10
VERIZON
GKSL42375834-45
DG-67498
GF4564
HFJ-88.8.98

Pythonでは、これを試しました:

re.findall(r'(\"\b.+?)(?!VER)\b\"',text)

しかし、それでも最後にVERが付いた単語を取得します。

どんな助けでもapperciatedされます。

4

2 に答える 2

2

これは、VERがに捕らえられているためです.+?(これ?により、.+欲張りになりませんが、この場合、捕らえられる唯一の方法は、....VERに捕らえられることです.+?)。「「VER」が後にないものに一致する」と言う代わりに、「最後の3文字がVERではない単語に一致する」(つまり、 「VER」が前にない終了引用符)を試してください。

.+また、 tryを使用する代わりに、複数の単語間の一致を[^"]回避します。.+

re.findall(r'\"(\b[^"]+)(?<!VER)\b\"',text)

例:

>>> text='"GameVER": ["GM435615-IQR", "LG-QR435", "HG145-IR9", "WUT828-PQR10"] "VERIZON": ["GKSL42375834-45", "DG-67498", "GF4564", "HFJ-88.8.98"]'
>>> re.findall(r'\"(\b[^"]+)(?<!VER)\b\"',text)
['GM435615-IQR', 'LG-QR435', 'HG145-IR9', 'WUT828-PQR10', 'VERIZON', 'GKSL42375834-45', 'DG-67498', 'GF4564', 'HFJ-88.8.98']

(ちなみに、上記の出力では、「HG145-IR9」と「WUT828-PQR10」はVERで終わっておらず、二重引用符で囲まれていますが、見逃していましたか?)

于 2012-10-23T23:49:01.967 に答える
1
  1. 手順1.コンマを追加します。

    with_commas = "],".join(text.split("]"))
    
  2. ステップ2.辞書を作成します。

    my_dict = eval("{%(text)s}" % {"text": with_commas})
    
  3. ???

    results = [item for sublist in my_dict.values() for item in sublist]
    for item in my_dict.keys():
        if item[-3:].lower() != "ver":
            results.append(item)
    
  4. 利益。

    print results
    
于 2012-10-24T00:35:31.767 に答える