0

以下のデータ操作に少し問題があります...これはサンプルコードです。通常、データの各行は常に変数「データ」の下に表示されます

import re

datas = """Class (EN)
    Class (NA)
    CLASS (AA)
    CLASS-TWO (AA)
    Class3-A-H (NO)"""

datas = datas.split("\n")

for data in datas:
    data = data.strip()
    data = re.sub(r'\s*\(\w+\)\s*$', '', data)
    print data

上記のコードを実行すると、学校のクラスがクラス コード(括弧で囲まれた部分)なしで返されます。

ただし、異なる処理が必要ないくつかのバリエーションがあります...

例:CLASS (NA) (N/A)返される必要があります:CLASS (N/A)

例#2:CLASS (NA) (BB)返される必要があります: CLASS (B/B) (BB)は削除されるべきではない唯一のものですが、代わりにに変更されます(B/B)

たとえば、次のデータです。

CLASS (EN)
CLASS (NA) (BB)
CLASS (AA) (N/A)
CLASS (N/A)
CLASS (BB)

返す必要があります:

CLASS
CLASS (B/B)
CLASS (N/A)
CLASS (N/A)
CLASS (B/B)

これはかなり複雑だと思います。かなりの数のことを試しましたが、正規表現の部分に正直に苦労しています

前もって感謝します-Hyflex

4

2 に答える 2

4

これを行う簡単な方法は、2 つのステップです。

(BB)まず、それぞれをサブに入れます (必要に応じて代わりに(B/B)行うこともできます)。str.replacere.sub

次に、(B/B)パターンに一致しなくなるため、既存のコードはすでに正しいことを行っています。

そう:

data = re.sub(r'\(BB\)', '(B/B)', data)
data = re.sub(r'\s*\(\w+\)\s*$', '', data)
于 2013-10-02T18:24:52.870 に答える