我有許多來自網路抓取表的嵌套串列,我想通過洗掉無用的 HTML 字符來“清理”這些串列。它們看起來像這樣:
example_list = ['12.7x55 mm PS12B',
'<td style="border-bottom:solid 2px">102\n</td>',
'<td style="border-bottom:solid 2px">46\n</td>',
'<td style="border-bottom:solid 2px">57\n</td>',
'<td style="border-bottom:solid 2px; background-color:#00990080;">6\n</td>',
'<td style="border-bottom:solid 2px; background-color:#00640080;">5\n</td>',
'<td style="border-bottom:solid 2px; background-color:#FB9C0E80;">4\n</td>']
我希望它看起來像這樣:
my_list = ['12.7x55 mm PS12B', '102', '46', '57', '6', '5', '4']
我嘗試了簡單的理解:
my_list[1:] = [i.replace('\n</td>', '') for i in list] # works perfectly
my_list[1:] = [i.replace('<td>', '') for i in list] # works perfectly
# for example the second item in the list is now `102`
# not `<td style="border-bottom:solid 2px">102\n</td>`
但是當我嘗試使用更具體的理解來編輯最后六個元素時:
my_list[1:] = [i.replace(i, i[-1]) for i in list if "back" in i]
它洗掉了我剛剛提取的所有其他串列元素,最后得到:
my_list = ['12.7x55 mm PS12B', '6', '5', '4']
我確信在 HTML 中有一種不那么晦澀的方法來做到這一點(我很高興知道),但我主要擔心的是我不明白簡單的 python 理解發生了什么。
uj5u.com熱心網友回復:
其余的元素被推導中的if條件過濾掉。如果你想保留它們,你需要添加else子句:
my_list[1:] = [
i.replace(i, i[-1])
for i in list
if "back" in i
else i # or however you wish to process the rest of the elements
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/347417.html
上一篇:如何將時間字串串列增加一天?
