0
votes

obtenir les éléments de la liste qui est préfixe / suffixe par tout autre caractère

J'ai une liste qui contient tellement d'éléments. Certains éléments sont préfixes / suffixes par n'importe quel caractère alphaNumérique.

list3=["xxsignzz","xxsign","signzz","Design","abc.sign.abc"]

Je veux la liste3 dans laquelle j'aurai des éléments comme

list1 = ["sign","xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"]
list2 = ["sign"]

Je devrais obtenir toute la valeur du préfixe / suffixe de signe par n'importe quoi dans list3.

Quelqu'un peut-il m'aider.


0 commentaires

5 Réponses :


1
votes

Est-ce ce que vous recherchez:

lower = [l.lower() for l in list1]
list3 = [el[0] for el in zip(list1, lower) if el[1] not in list2]

>>> ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']


0 commentaires

0
votes

Essayez :

list1 = ["sign", "xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"]
list2 = ["sign"]


output = [i for i in list1 for x in list2 if x in i and x.lower() != i.lower()]
print(output) # ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']


0 commentaires

0
votes

Utilisation de Regex.

Ex:

import re

list1 = ["sign","xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"]
list2 = ["sign"]
ptrn = re.compile("|".join(list2) + r"\b", flags=re.I)
print([i for i in list1 if not ptrn.match(i)])
#--> ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']


0 commentaires

1
votes

Essayez :

['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']

[li for li in list1 if list2[0] in li and len(li)!=len(list2[0])]


0 commentaires

0
votes

La manière pythonique de résoudre ce problème est d'utiliser la compréhension de liste . J'ai géré si votre list2 a plus d'un élément.

['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']

La compréhension de la liste ci-dessus est équivalente à:

result = []
for i in list1:
    for j in list2:
        if j in i and len(j) < len(i):
            result.append(i)

print(result)

Sortie:

list1 = ["sign", "xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"]
list2 = ["sign"]

result = [i for i in list1 for j in list2 if j in i and len(j) < len(i)]
print(result)


0 commentaires