这是我的第一个问题。希望你们中的一些人能提供帮助。
我有两个清单。
list1 = ['sign','SIGN','siGN','DESIGN','design','deSIGn','xxdesignxx',
'xxdesign', 'xxdesignxx', '.sign.', 'sign.', 'sign.',
'sign.', 'xxsignxx', 'xxsign', 'xxsignxx','abc','def']
list2 = ['sign']
我希望输出为:
list1 = ['DESIGN','design','deSIGn','xxdesignxx',
'xxdesign', 'xxdesignxx','xxsignxx', 'xxsign',
'xxsignxx']
我只是想删除所有“符号”(大写/小写/两者的组合/前缀,后缀加任何“。”)
有人可以帮我吗?
答案 0 :(得分:7)
您可以尝试以下操作:-
list1 = ['sign','SIGN','siGN','design', 'design', 'design',
'xxdesignxx', 'xxdesign', 'xxdesignxx', '.sign.', 'sign.',
'sign.', 'sign.', 'xxsignxx', 'xxsign', 'xxsignxx']
list2 = ['sign']
res = [i for i in list1 if i.lower().strip('.') not in list2[0]]
print(res)
输出:-
['design', 'design', 'design', 'xxdesignxx', 'xxdesign', 'xxdesignxx', 'xxsignxx', 'xxsign', 'xxsignxx']
已回答问题的答案
list1 = ['sign','SIGN','siGN','DESIGN','design','deSIGn','xxdesignxx',
'xxdesign', 'xxdesignxx', '.sign.', 'sign.', 'sign.',
'sign.', 'xxsignxx', 'xxsign', 'xxsignxx','abc','def']
list2 = ['sign']
res = [i for i in list1 if list2[0] in i.lower() and i.lower().strip('.') not in list2[0]]
print(res)
输出:-
['DESIGN', 'design', 'deSIGn', 'xxdesignxx', 'xxdesign', 'xxdesignxx', 'xxsignxx', 'xxsign', 'xxsignxx']
答案 1 :(得分:1)
您还可以使用filter()
函数从列表中过滤某些值,而不是列表理解。除此之外,您只需要将所有元素设置为相同的大写/小写格式并过滤出句点即可。
list(filter(lambda x: 'sign' != ''.join([i for i in x if i.isalpha()]).lower(), list1))
['design',
'design',
'design',
'xxdesignxx',
'xxdesign',
'xxdesignxx',
'xxsignxx',
'xxsign',
'xxsignxx']
答案 2 :(得分:0)
尝试此操作,^(\.|)
以.
或empty
开头,后跟sign
import re
search_ = re.compile("^(\.|)sign", re.IGNORECASE)
[x for x in list1 if not search_.search(x)]
答案 3 :(得分:0)
您可以在这里使用str.strip()
剥离任何'.'
,然后进行比较:
list1 = ['sign','SIGN','siGN','DESIGN','design','deSIGn','xxdesignxx',
'xxdesign', 'xxdesignxx', '.sign.', 'sign.', 'sign.',
'sign.', 'xxsignxx', 'xxsign', 'xxsignxx','abc','def']
list2 = ['sign']
list1 = [w for w in list1 if len(list2[0]) < len(w.strip('.'))]
print(list1)
输出:
['DESIGN', 'design', 'deSIGn', 'xxdesignxx', 'xxdesign', 'xxdesignxx', 'xxsignxx', 'xxsign', 'xxsignxx']
答案 4 :(得分:-2)
如果我听错了,你也想删除标点符号。
s.translate(None, string.punctuation)
s是您拥有的字符串。也许这会有所帮助。
对于更高版本的python
s.translate(str.maketrans('', '', string.punctuation))