как преобразовать выбранную строку в списке в целочисленный питон - PullRequest
0 голосов
/ 18 октября 2019

этот вопрос для преобразования выбранных строк в списке в целые числа.

Однако этот код преобразует весь список в целое число. Как я могу это исправить?

list = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]

def convert(str_list):
for i in range(len(str_list)):
    for j in range(len(str_list)):
        if str_list[i][j].isdigit():
            str_list[i][j] = int(str_list[i][j])
return(str_list)

edit: этот код ^ выше также работает. я уже отредактировал это !! Выходные данные должны быть

[['x', 'x', 1, 'x'], [4, 'x', 'x', 'x'], ['x', 'x', 'x', 2], ['x', 3, 'x', 'x']]

Ответы [ 3 ]

0 голосов
/ 18 октября 2019

Вы можете проверить, содержит ли строка цифры .isdigit(). Таким образом, вы можете вызывать int только в том случае, если элемент в этом индексе содержит цифры:

def convert(str_list):
    n = 0
    while n < len(str_list):
        if str_list[n].isdigit():
            str_list[n] = int(str_list[n])
        n += 1
    return(str_list)

Затем вы можете перебрать все списки в вашем основном списке и конвертировать их по отдельности:

lst = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]
for l in lst:
    convert(l)

print(lst)

Выход

[['x', 'x', 1, 'x'], [4, 'x', 'x', 'x'], ['x', 'x', 'x', 2], ['x', 3, 'x', 'x']]
0 голосов
/ 18 октября 2019

Для этого идеально подойдет понимание списка (также не перезаписывайте встроенные функции!)

data = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]

def converted(str_list):
    return [int(s) if s.isdigit() else s for s in data]

Если вы должны использовать цикл while, вы можете сделать это:

def convert(str_list):
    for i in range(len(data)):
        for n in range(len(data[i])):
            try: data[i][n] = int(data[i][n])
            except: pass
0 голосов
/ 18 октября 2019

map эта функция в вашем списке:

def str2num(s):
# Convert a string to an int, float, or stripped string

    try:
        return int(s)

    except ValueError:
        try:
            return float(s)

        except ValueError:
            return s.strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...