Ошибка Python при попытке вставить / обновить тип (int) обратно во вложенный список после преобразования из строки - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно получить доступ и преобразовать элемент 3 во вложенный список, созданный из текстового файла.

Я абсолютно новичок в python и могу читать списки, на этом этапе я предпочитаю "длинный скрипт", поскольку он помогает мне визуализировать.

Элемент является строковым типом. Он содержит либо слово, которое мне нужно прописать, либо число, а также символ $ для удаления.

Мой цикл работает, и когда я print(x), я получаю успешную печать значения, к которому мне нужно получить доступ.

Я могу успешно выполнить все форматирование. $ удаляется, слово - capitalised с оператором if внутри цикла, и я использую isdigit() для успешной идентификации и преобразования string в int(x).

Там, где я терплю неудачу, в основном это многочисленные попытки взять значение (x) и вставить его обратно в мой список [3]

Показывает ли моя неопытность?

Я перепробовал много вариантов, но главная ошибка int type is not subscriptable меня преследует.

Насколько я понимаю, списки изменчивы и могут содержать различные типы, я прав?

Вот мой код.

del list[3]
list.insert(3, x)
list[3] = x
if list[3] !='':
    list[3] = x

Не фактический список.

propertyList = [[ some , text , 23424], [other , 3234 , replaceme],[text, floatreplace, 99.33]] 
for x in propertyList:
  x = x[3]
  x = x.strip('$')

  try:
    if "." in x :
      x = float(x)
      print(x, "Yes, user input is a float number.")
    elif(x.isdigit()):
      x = int(x)
      del propertyList[3]
      propertyList.insert(3, x)
      print(x, "Yes, input string is an Integer.")
    else:
     if x == 'auction':
      x = x.capitalize()
      print(x)
  except ValueError:
    print(x, 'is type',type(x))
# propertyList[3].replace(x)
print(propertyList)

return

Я надеюсь заменить строковый элемент моим новым отформатированным и преобразованным элементом int.

TypeError: 'int' object is not subscriptable

1 Ответ

0 голосов
/ 25 мая 2019

Я думаю, что ваша проблема в том, что вы заменяете элементы во внешнем списке, а не в подсписке. Когда вы делаете del propertyList[3], это удаляет весь подсписок.

Чтобы удалить из подсписка, вам нужно использовать отдельное имя переменной для подсписка и элемента в списке, поэтому начните так:

for sublist in propertyList:
    x = sublist[3]

А затем измените эти строки, чтобы изменить sublist вместо propertyList:

del propertyList[3]
propertyList.insert(3, x)

Однако заменить элемент гораздо проще, выполнив следующее:

sublist[3] = x
...