Задать вопрос

Как преобразовать значение переменной в другой тип, используя минимальное количество исключений?

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

Участок кода, которого, я думаю, достаточно:

letters = "abcdefgh"

for index, letter in enumerate(letters.upper()):
    for number in range(2, len(names) + 2):
        splited_name = names[number - 2].split()

        try:
            ws[f"{letter}{number}"] = splited_name[index]
        except:
            if int(splited_name[index - 1]) > 150:
                ws[f"{letter}{number}"] = "Призер"
            else:
                ws[f"{letter}{number}"] = "Участник"

Основная проблема - это из строки, которая содержит цифры, перевести в полноценный integer, но сколько бы я не пробовал, должного решения я так и не изобрел.

Используя условие, убрал исключение:

for index, letter in enumerate(letters.upper()):
    for number in range(2, len(names) + 2):
        splited_name = names[number - 2].split()

        if index == 7:
            if int(splited_name[index - 1]) > 150:
                ws[f"{letter}{number}"] = "Призер"
            else:
                ws[f"{letter}{number}"] = "Участник"
        else:
            ws[f"{letter}{number}"] = splited_name[index]
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
amletixq
@amletixq Автор вопроса
Все оказалось намного проще. чем я думал.

Я использовал второй вариант с условием, и дописал в части else:

for index, letter in enumerate(letters.upper()):
    for number in range(2, len(names) + 2):
        splited_name = names[number - 2].split()

        if index == 7:
            if int(splited_name[index - 1]) > 150:
                ws[f"{letter}{number}"] = "Призер"
            else:
                ws[f"{letter}{number}"] = "Участник"
        else:
            if index >= 4 or index == 6:
                ws[f"{letter}{number}"] = int(splited_name[index])


По факту, у меня было определенное количество данных, и эти данные по своим позициям были фиксированными, то есть, например первый кусок был точно строкой, а с 4 по 6 были числами, так что мне нужно было выловить их в цикле и просто добавить их в таблицу, и не махиначить с исключениями.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
это из строки, которая содержит цифры, перевести в полноценный integer,


хорошо помогает isnumeric(), строку в список через list comprehention и затем выкинуть все что не число
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы