1

我正在使用以下正则表达式来匹配所有出现的特殊数字:

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

让我们假设这个正则表达式匹配以下五个数字:

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

然后使用以下代码打印这些匹配项。这将打印列表中的每个项目,如果该项目包含破折号,则破折号之后的所有内容都将被丢弃。

def number_function():

    for x in range(0, 10):

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

但是,这将打印五行,其中第 1、3 和 4 行相同。

我需要您的帮助来编写一个脚本,将每个项目与所有以前的项目进行比较,并且仅在该项目不存在时才打印该项目。

因此,所需的输出将是以下三行:

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)

就是这样。事实上它是如此简单,除非我在程序中至少执行两次,否则我不会单独创建它的功能。

于 2012-05-05T06:46:36.273 回答