【发布时间】:2018-01-03 04:05:00
【问题描述】:
如果列表元素包含“非法”字符,我想删除它。合法字符在多个列表中指定。它们是这样形成的,其中alpha 代表字母表(a-z + A-Z),digit 代表数字(0-9),punct 代表标点符号(有点)。
alpha = list(string.ascii_letters)
digit = list(string.digits)
punct = list(string.punctuation)
这样,如果某项未出现在这些列表之一中,我可以将其指定为非法字符。
之后我有一个包含元素的列表:
Input = ["Amuu2", "Q1BFt", "dUM€n", "o°8o1G", "mgF)`", "ZR°p", "Y9^^M", "W0PD7"]
我想过滤掉包含非法字符的元素。所以这是我想要得到的结果(不需要订购):
var = ["Amuu2", "Q1BFt", "mgF)`", "Y9^^M", "W0PD7"]
编辑:
我已经尝试过(以及它的所有变体):
for InItem in Input:
if any(AlItem in InItem for AlItem in alpha+digit+punct):
FilInput.append(InItem)
仅使用过滤后的元素创建一个新列表,但这里的问题是当包含至少一个合法字符时元素会被添加。例如:"ZR°p" 被添加,因为它包含一个 Z、R 和一个 p。
我也试过了:
for InItem in Input:
if not any(AlItem in InItem for AlItem in alpha+digit+punct):
但在那之后,我不知道如何删除该元素。 哦,还有一个小技巧,为了让它变得更加困难,如果它有点快就好了,因为它需要完成数百万次。但它需要先发挥作用。
【问题讨论】:
-
你尝试过哪些事情?
标签: python list if-statement contains