首页 > 解决方案 > 在数据python数组中减去字符串

问题描述

我正在尝试执行以下操作:

  1. 创建一个随机数据数组
  2. 创建一组预定义代码(AW、SS)
  3. 减去所有数字以及预定义代码的任何实例。
  4. 如果在第 3 步之后仍然存在一个名为“HL”的字符串,则也将其删除并取下一个字母对。如果一个名为“HL”的字符串是数组中唯一的字符串,那么就使用它。

我不知道如何完成步骤 3 - 4。

1.

array_data = ['HL22','PG1234-332HL','1334-SF-21HL','HL43--222PG','HL222AW11144RH','HLSSDD','SSDD']

2.

predefined_code = ['AW','SS']

3.

理想情况下,此步骤的结果将如下所示

result_data = [['HL'],['PG,HL'],['SF','HL'],['HL','PG'],['HL','RH'], 
['HL','DD'],['DD']

4. 理想情况下,此步骤的结果将如下所示:

result_data = [['HL'],['PG'],['SF'],['PG'],['RH'], ['DD'],['DD']

对于第 3 步,我尝试了以下代码

not_in_predefined = [item for item in array_data if item not in predefined_code]

但这不会产生我正在寻找的结果,因为它会根据项目检查项目。不是部分字符串匹配。

标签: pythonarraysregexpandasloops

解决方案


这使用正则表达式相当简单。

re.findall(r'[A-Z].',item)应该为您提供字符串中的文本,然后您可以对其进行所需的处理。

您可能希望最终将列表转换为集合并使用该difference操作,而不是循环和删除predefined_code列表中定义的元素。


推荐阅读