[英]Remove a pattern from list element and return another list in Python
假设我有一个这样的列表
List=["Face123","Body234","Face565"]
我想获得一个没有在另一个列表中描述的字符/子字符串的列表作为输出。
NonDesideredPattern["Face","Body"]
Output=[123,234,565].
我不确定,这是否 100% 有效,但您可以执行以下操作:
def eval_list(og_list):
list_parts = []
list_nums = []
for element in og_list:
part = ""
num = ""
for char in element:
if char.isalpha():
part += char
else:
num += char
list_parts.append(part)
list_nums.append(num)
return list_parts, list_nums
(如果您总是使用字母语法然后是数字)
创建一个函数,该函数返回一个没有不需要的模式的字符串。 然后在理解列表中使用此函数:
import re
def remove_pattern(string, patterns):
result = string
for p in patterns:
result = re.sub(p, '', result)
return result
inputs = ["Face123", "Body234", "Face565"]
undesired_patterns = ["Face", "Body"]
outputs = [remove_pattern(e, undesired_patterns) for e in inputs]
使用re.compile和re.sub
import re
lst = ["Face123", "Body234", "Face565"]
lst_no_desired_pattern = ["Face","Body"]
pattern = re.compile("|".join(lst_no_desired_pattern))
lst_output = [re.sub(pattern, "", word) for word in lst]
结果:
['123', '234', '565']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.