簡體   English   中英

Python - 從列表中的字符串元素中刪除子字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM