Python3: сравнение динамического списка c для создания регулярного выражения - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время я пишу класс для создания регулярного выражения. В качестве входных данных мы получили 3 предложения в списке ("textContent"), а выходное регулярное выражение должно соответствовать 3 предложениям.

Для этого я использую ZIP. Приведенный ниже код работает на 100%.

from array import *

textContent = []

textContent.append("The sun is.shining")
textContent.append("the Sun is ShininG")
textContent.append("the_sun_is_shining")

s = ""

for x, y, z in zip(textContent[0], textContent[1], textContent[2]):
    if x == y == z:
        s+=str(x)
    else:
        s+="."

#answer is ".he..un.is..hinin."
print(s)

Он работает, но ТОЛЬКО с 3 предложениями в списке.

Теперь мне нужно такое же сравнение, но с динамическим c списком, который например, может содержать 2 или 256 предложений. И я застрял. Я не знаю, как отрегулировать код для этого.

Я заметил, что следующее не выдает ошибок:

zip(*textContent)

Итак, я застрял с переменные, которые я сравнивал раньше: x, y, z

for x, y, z in zip(*textContent):

Он может работать, только если textContent содержит 3 значения ...

Есть идеи? Может быть, это другой класс, чем ZIP.

Спасибо

1 Ответ

0 голосов
/ 28 мая 2020

Это решит вашу проблему с архивированием и сравнением:

l = ['asd', 'agd', 'add', 'abd']

for letters in list(zip(*l)):
    if all([letters[0] == letter for letter in letters]):
        print('Yey')
    else:
        print('Ugh')

>>> Yey
>>> Ugh
>>> Yey

И для l = ['asd', 'agg', 'add', 'cbb'] он напечатает 3 'Ugh' . Также вы должны проверить, больше ли l, чем 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...