【问题标题】:Python - Remove substring from string element in a list?Python - 从列表中的字符串元素中删除子字符串?
【发布时间】:2020-04-05 14:07:58
【问题描述】:

根据我所有的谷歌搜索,我正在做的事情应该有效。 Tl;博士 - 当我提取一些表格时,它的格式很奇怪,其中一些在字段名称中有“隐藏”(表格本身有一个隐藏选项,可能只是由于它包含在字段名称中的惰性格式)。

我已将表发送到一个大列表,并尝试将replace'Hide ''' 联系起来,但它失败了。我不确定在同一缩进行上有连续的if 语句是否会导致问题。这是我尝试过的代码的 sn-p(上面和下面还有更多,但这是导致错误的部分)。

my_list = ['Hide Physical Characteristics Eye Colour', 'brown', 'Hide Height', '180cm', 
'Hide Weight', '75kg']

#above the if statement, I set [val_idx] to my_list.index based on keywords in the list

if 'Hide Physical Characteristics Eye Colour' in my_list[val_idx]:
    my_list[val_idx] = 'Eye Colour'
if 'Hide ' in my_list[val_idx]:
    my_list[val_idx].replace('Hide ', '')

我没有用值(即头发颜色)明确替换第二个 if 语句的原因是,有几个字段将“隐藏”作为字段名称中唯一不受欢迎的部分,而不是较长的“隐藏物理”特征眼睛颜色',这是我唯一有兴趣替换的长字段名称,让它更直接似乎更简单。

根据我对 python 的了解(只有基础知识,当然还有一点),这一切都应该有效。第一个if 语句确实有效,但第二个语句仍然在输出中给出'Hide '

【问题讨论】:

    标签: python string list if-statement replace


    【解决方案1】:

    这可以满足您的需求

    my_list = ['Hide Physical Characteristics Eye Colour', 'brown', 'Hide Height', '180cm', 
    'Hide Weight', '75kg']
    
    for item in my_list:
        if 'Hide Physical Characteristics Eye Colour' == item:
            my_list[my_list.index(item)] = 'Eye Colour'
        else:
            my_list[my_list.index(item)].replace('Hide ', '')
    

    【讨论】:

      【解决方案2】:

      您可以先将列表中所有字符串中的“隐藏”替换为空白。然后删除可能仅适用于列表中一个元素的“物理特征”。

      list(map(lambda s: s.replace("Hide ", "").replace("Physical Characteristics ",""), my_list))
      

      输出

      ['Eye Colour', 'brown', 'Height', '180cm', 'Weight', '75kg']
      

      【讨论】:

      • 哦,我喜欢这个。
      【解决方案3】:

      字符串是不可变的,因此my_list[val_idx].replace('Hide ', '') 返回一个必须分配回列表的新字符串

      my_list[val_idx] = my_list[val_idx].replace('Hide ', '')
      

      【讨论】:

      • 当我把它放回去时,它会回到相同的索引位置吗(例如'高度'回到第二个索引),因为我需要它们对应于之后的值(即重量不能为 180 厘米)。我将它们发送到函数末尾的字典。编辑:这行得通(它确实保持了这个位置,我只是文盲,而且时间还很早。非常感谢!)
      • 是的,它将分配给my_list[val_idx],所以基本上分配给val_idx位置
      猜你喜欢
      • 2021-06-24
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多