1

次の正規表現を使用して、特別な種類の数値のすべての出現に一致させています。

^([0-57-9]|E)[12][0-9]{3}[A-Z]?[A-Z]([0-9]{3}|[0-9]{4})

この正規表現が次の 5 つの数字と一致すると仮定します。

31971R0974
11957E075
31971R0974-A01P2
31971R0974-A05
51992PC0405

これらの一致は、次のコードを使用して出力されます。これにより、リスト内の各項目が出力され、項目にダッシュが含まれている場合、ダッシュの後のすべてが破棄されます。

def number_function():

    for x in range(0, 10):

    print("Number", number_variable[x].split('-', 1)[0])

ただし、これは 5 行を出力し、1 行目、3 行目、4 行目は同じになります。

各アイテムを以前のすべてのアイテムと比較し、アイテムがまだ存在しない場合にのみそのアイテムを印刷するスクリプトを作成するために、あなたの助けが必要です.

したがって、目的の出力は次の 3 行になります。

31971R0974
11957E075
51992PC0405

編集2:

解決しました!動き回る必要がありました。完成品は次のとおりです。

def instrument_function():
    desired = set()

    for x in range(0, 50):
        try:
            instruments_celex[x]
        except IndexError:
            pass
        else:
            before_dash = instruments_celex[x].split('-', 1)[0]
            desired.add(before_dash)        

    for x in desired:
        print("Cited instrument", x)
4

2 に答える 2

2

私は今までほとんどPythonをやったことがありませんが、これはあなたが求めていることをするかもしれません

def number_function():
    desired = set()
    for x in range(0, 10):
        before_hyphen = number_variable[x].split('-', 1)[0]
        desired.add(before_hyphen)
    for x in desired:
        print("Number", x)
于 2012-05-04T12:49:35.437 に答える
0

これは、より合理的な「完成した」関数のバージョンです。

# Don't use instruments_celex as a global variable, that's terrible. 
# Pass it in to the function instead:
def instrument_function(instruments_celex): 
    unique = set()
    # In Python you don't need an integer loop variable. This is not Java.
    # Just loop over the list:
    for entry in instruments_celex:
       unique.add(entry.split('-', 1)[0])

    for entry in unique:
        print("Cited instrument", entry)

ジェネレータ式を使用して、これを短くすることもできます。

def instrument_function(instruments_celex): 
    unique = set(entry.split('-', 1)[0] for entry in instruments_celex)
    for entry in set:
       print("Cited instrument", entry)

それでおしまい。実はとてもシンプルなので、プログラムで少なくとも2回実行しない限り、別の機能を作成することはありません。

于 2012-05-05T06:46:36.273 に答える