![](/img/trans.png)
[英]Python - Remove any element from a list of strings that is a substring of another element
[英]Python - Remove substring from string element in a list?
基於我所有的谷歌搜索,我正在做的事情應該有效。 Tl; dr - 當我提取一些表格時,它的格式很奇怪,其中一些在字段名稱中有“隱藏”(表格本身有一個隱藏選項,可能只是由於它包含在字段名稱中的懶惰格式)。
我已將該表發送到一個大列表,並試圖用''
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 語句的原因是有幾個字段將“隱藏”作為字段名稱中唯一不需要的部分,而不是更長的“隱藏物理特征眼睛顏色” ' 這是我唯一有興趣替換的長字段名稱,讓它更直接似乎更簡單。
根據我對 python 的了解(只有基礎知識,但不可否認)這應該都有效。 第一個if
語句確實有效,但第二個仍然在輸出中給出'Hide '
。
字符串是不可變的,所以my_list[val_idx].replace('Hide ', '')
返回一個必須分配回列表的新字符串
my_list[val_idx] = my_list[val_idx].replace('Hide ', '')
您可以先將列表中所有字符串中的“隱藏”替換為空白。 然后刪除“物理特性”,它可能只適用於列表中的一個元素。
list(map(lambda s: s.replace("Hide ", "").replace("Physical Characteristics ",""), my_list))
輸出
['Eye Colour', 'brown', 'Height', '180cm', 'Weight', '75kg']
這可以做你正在尋找的
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 ', '')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.