我使用以下正则表达式匹配所有出现的特殊数字:
^([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)
答案 0 :(得分: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)
答案 1 :(得分: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)
就是这样。实际上这很简单,除非我在程序中至少做过两次,否则我不会单独使用它。