как сохранить значения в список в Python - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь сохранить значения в списке, но когда я делаю это, это дает мне значение None. Не уверен, что именно я делаю не так здесь

for sentence in mylist:
    global typ, DN, pn
    matches = re.finditer(regex_f, sentence, re.MULTILINE | re.IGNORECASE)
    for matchNum, match in enumerate(matches, start=1):
        subst = sentence[match.end():]
        pn_matches = re.findall(regexp, subst, re.MULTILINE | re.IGNORECASE)

        if len(pn_matches) > 0:
            pn = pn_matches
            pn_p = ("{pn}".format(flansch=match.group(), pn=pn))
            print(pn)
            list_test = []
            dat_test = list_test.append(pn)
            print(dat_test)

        else:
            pn_p = '?'
            print("no PN found".format(flansch=match.group()))

['PN10']
None
['PN16']
None
['PN 40']
None

Если я печатаю значения непосредственно из pn, он работает, но когда я добавляю его в список, он говорит None.

1 Ответ

0 голосов
/ 06 ноября 2019

Как уже сказали другие list.append() не имеет возвращаемого значения. Вот почему dat_test всегда будет установлен на None.

. Вы должны использовать append вот так list_test.append(pn), не добавляя его в новую переменную. Тогда, если вы print(list_test) вместо print(dat_test), с вами все будет в порядке.

for sentence in mylist:
    global typ, DN, pn
    matches = re.finditer(regex_f, sentence, re.MULTILINE | re.IGNORECASE)
    for matchNum, match in enumerate(matches, start=1):
        subst = sentence[match.end():]
        pn_matches = re.findall(regexp, subst, re.MULTILINE | re.IGNORECASE)

        if len(pn_matches) > 0:
            pn = pn_matches
            pn_p = ("{pn}".format(flansch=match.group(), pn=pn))
            print(pn)
            list_test = []
            list_test.append(pn)
            print(list_test)

        else:
            pn_p = '?'
            print("no PN found".format(flansch=match.group()))

В зависимости от вашего реального варианта использования, я бы посоветовал подумать о размещении list_test в вашем коде, так каквсегда сбрасывается в пустой список для каждого предложения, где len(pn_matches) > 0. В результате вы получите только последний результат в списке!

РЕДАКТИРОВАТЬ:

list_test = []
for sentence in mylist:
    global typ, DN, pn
    matches = re.finditer(regex_f, sentence, re.MULTILINE | re.IGNORECASE)
    for matchNum, match in enumerate(matches, start=1):
        subst = sentence[match.end():]
        pn_matches = re.findall(regexp, subst, re.MULTILINE | re.IGNORECASE)

        if len(pn_matches) > 0:
            pn = pn_matches
            pn_p = ("{pn}".format(flansch=match.group(), pn=pn))
            print(pn)

            list_test.append(pn)
            print(list_test)

        else:
            pn_p = '?'
            print("no PN found".format(flansch=match.group()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...