Python-从列表中的字符串元素中删除子字符串吗?

时间:2019-12-12 08:15:40

标签: python string list if-statement replace

基于我的所有Google询问,我正在做什么。 Tl; dr-当我提取一些表时,它的格式很奇怪,其中一些在字段名中带有“ Hide”(表本身上有一个hide选项,这可能是由于字段名中包含了惰性格式) )。

我已将表发送到一个大列表,并尝试将replace'Hide '一起'',但是失败了。我不确定同一缩进行上是否有连续的if语句是否引起问题。这是我尝试过的代码的片段(上面和下面都有更多内容,但这是导致错误的部分)。

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语句显式替换为值(即发色)的原因是,有多个字段将“ hide”作为字段名称中唯一不希望出现的部分,而不是更长的“ Hide Physical”字段“特性眼睛颜色”是我有兴趣替换的唯一一个长字段名称,要使其更直接看起来更简单。

基于我对python的了解(仅是基础知识,还有其他一些公认的知识),这应该都可以工作。第一个if语句确实起作用,但是第二个语句仍在输出中提供'Hide '

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

输出

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

答案 2 :(得分:0)

这可以满足您的需求

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 ', '')
相关问题