簡體   English   中英

如何從列表中查找和刪除具有特定模式的元素?

[英]How can I find and remove elements that have a specific pattern from a list?

我有一個類似這樣的列表:

output=['Filesystem            Size  Used Avail Use% Mounted on', '/dev/mapper/vg00-lvol_root', '                      976M  356M  570M  39% /', 'tmpfs                 1.9G     0  1.9G   0% /dev/shm', '/dev/mapper/vg00-lvol_apps', '                       20G  6.1G   13G  33% /apps', '/dev/sda1             976M   63M  863M   7% /boot', '/dev/mapper/vg00-lvol_data'.....]

我想刪除所有格式為"/dev/mapper/...."的元素。 例如這里list[1]='/dev/mapper/vg00-lvol_root' 我嘗試使用索引來刪除(因為在這種情況下,奇數被模式占用。但情況並非總是如此)。 然后我嘗試了將元素轉換為字符串的邏輯,然后使用正則表達式來查找模式。 我想運行一個 for 循環來將列表元素提取到單個字符串(所有這些都很復雜)。 我相信一定有更簡單的方法來解決這個問題

l=['Filesystem Size Used Avail Use% Mounted on', '/dev/mapper/vg00-lvol_root', ' 976M 356M 570M 39% /', 'tmpfs 1.9G 0 1.9G 0% /dev/shm', '/dev/mapper/vg00-lvol_apps', ' 20G 6.1G 13G 33% /apps', '/dev/sda1 976M 63M 863M 7% /boot', '/dev/mapper/vg00-lvol_data']

filtered = [ x for x in l if "/dev/mapper/" not in x ]

print(filtered)

輸出:

['已使用的文件系統大小 Avail Use% Mounted on'、'976M 356M 570M 39% /'、'tmpfs 1.9G 0 1.9G 0% /dev/shm'、'20G 6.1G 13G 33% /apps'、'/dev /sda1 976M 63M 863M 7% /boot']

如果你有多個字符串需要檢查,你可能需要這個。

regex=re.compile('^/dev/mapper|^/usr/a')
filtered_list = [s for s in my_list if not re.match(regex, s)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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