根据另一个字符串列表(例如黑名单字符串)从字符串列表的每个元素末尾删除字符 - python

我有一本字典,其中包含许多用于键“ sample”的唯一字符串值。我正在将这个关键的“样本”转换为列表以进行打印,但是我想生成另一个列表,该列表具有相同数量的元素,这些元素在每个元素的末尾去除某些字符串,以生成一个“干净的”列表,该列表可以对某些元素进行分组样本一起绘制。例如,我的黑名单如下所示:

blacklist = ['_001', '_002', '_003', '_004', '_005', '_006', '_007', '_008', '_009', \
                       '_01', '_02', '_03', '_04', '_05', '_06', '_07', '_08', '_09', \
                       '_1', '_2', '_3', '_4', '_5', '_6', '_7', '_8', '_9']

我想从我的字典生成的此示例列表中的每个项目中删除它:

sample = [(d['sample']) for d in my_stats]
sample
['sample_A', 'sample_A_001', 'sample_A_002', 'my_long_sample_B_1', 'other_sample_C_08', 'sample_A_03', 'sample1_D_07']

具有新列表的预期结果:

sample
['sample_A', 'sample_A', 'sample_A', 'my_long_sample_B', 'other_sample_C', 'sample_A', 'sample1_D']

对于上下文,我知道会有一些元素是相同的-我想使用此列表来编译一个数据帧,并与具有相同数量值的列表结合使用,该列表从此字典中生成,其他键将用作id在绘图中(例如,我可以使用它来对所有这些值进行分组/着色相同)。请注意,下划线可能有多种,并且我的字符串列表中可能有一些元素不包含黑名单中的任何值(例如,这就是为什么我不能在最后一个下划线上使用split变体的原因)。

这类似于此问题:
How can I remove multiple characters in a list?

但我不希望它过于笼统/贪婪,并且理想情况下是希望仅从末尾删除它,因为用户内部可能有一个包含这些字符串的一部分的输入文件(例如sample1_D中的1)。如果有其他解决方案,我不必使用黑名单,这似乎是最简单的方法。

python大神给出的解决方案

在这里,看看是否符合您的要求。

基本上,您只是拆分'_'字符并测试列表中的最后一个拆分是否在您的黑名单中。如果True,则将其删除;如果False,则将字符串重新放回;否则,将其删除。并根据结果建立一个新列表。

blacklist = ['_001', '_002', '_003', '_004', '_005', '_006', '_007', '_008',
             '_01', '_02', '_03', '_04', '_05', '_06', '_07', '_08', '_09',
             '_1', '_2', '_3', '_4', '_5', '_6', '_7', '_8', '_9']
sample = ['sample_A', 'sample_A_001', 'sample_A_002', 'my_long_sample_B_1',
          'other_sample_C_08', 'sample_A_03', 'sample1_D_07']
results = []

for i in sample:
    splt = i.split('_')
    value = '_'.join(splt[:-1]) if '_{}'.format(splt[-1:][0]) in blacklist else '_'.join(splt)
    results.append(value)

print(results)

输出:

['sample_A', 'sample_A', 'sample_A', 'my_long_sample_B', 'other_sample_C', 'sample_A', 'sample1_D']

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

Python:同时在for循环中添加到列表列表 - python

我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

如何获取Python中所有内置函数的列表 - python

当我们从中获取关键字列表时,如何从Python提示符中获取Python中所有内置函数的列表? python大神给出的解决方案 更新:关于__builtins__或__builtin__可能会有一些混淆。What’s New In Python 3.0建议使用builtins 将模块__builtin__重命名为builtins(删除下划线, 添加一个“ s”…

Python查找单词可以用字符构建 - python

Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过editing this post阐明问题。 4个月前关闭。 Improve this question 我想找出单词'apple'(word_list)是否可以用char_list1构建但不能用char_li…