У меня есть список, в котором большинство элементов представляют собой числа в виде строк и несколько обычных строк, которые я получил из набора данных.
Вот первые 50 пунктов:
['-', '-', '-', '-', '-', '404000000', '110000000', '4926000', '15000000', '-', '-', '-', '-', '-', '14900000', '66100000', '15000000', '13000000', '20000000', '-', '20000000', '30000000', '-', '-', '-', '-', '278000000', '-', '17000000', '275000000', '121000000', '-', '12000000', '-', '29000000', '-', '267000000', '500000000', '50000000', '-', '356000000', '-', '-', '-', '20000000', '-', '-', '-', '-', '-']
Я хочу заменить эти «-» и «нераскрытые» на число 0. Я следил за этот ответ в вопросе о стеке, но это руководство не сработало, и я даже пробовал это, но все равно не работал.
for p in price:
if p != '-' and p != 'undisclosed':
p = int(p)
else:
p = 0
Как говорится в комментарии, вы фактически не меняете значение в списке. Вы можете попробовать перечислить:
price = ['-', '-', '-', '-', '-', '404000000', '110000000', '4926000', '15000000', '-', '-', '-', '-', '-', '14900000', '66100000', '15000000', '13000000', '20000000', '-', '20000000', '30000000', '-', '-', '-', '-', '278000000', '-', '17000000', '275000000', '121000000', '-', '12000000', '-', '29000000', '-', '267000000', '500000000', '50000000', '-', '356000000', '-', '-', '-', '20000000', '-', '-', '-', '-', '-']
for n,p in enumerate(price):
if p != '-' and p != 'undisclosed':
price[n] = int(p)
else:
price[n] = 0
на самом деле вы нигде не храните
p
, поэтомуprice
не изменится,