基于我的所有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 '
。
答案 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 ', '')