Ошибка при преобразовании списка строк в список с отдельным целым числом? - PullRequest
1 голос
/ 01 февраля 2020

У меня есть список типа строки li = ['192 245 3 881250949']

, если я напечатаю li, он показывает

'196\t242\t3\t881250949'

Как мне получить список li в форма отдельных целых чисел

li=[192 245 3 881250949] т.е. список целых чисел

Я получаю ошибку при использовании карты

results = list(map(int, li))

ValueError: недопустимый литерал для int () с основанием 10: '196 \ t242 \ t3 \ t881250949'

Может кто-нибудь объяснить это и помочь преобразовать список?

Ответы [ 4 ]

1 голос
/ 01 февраля 2020

Вы получаете ValueError, потому что int() не может преобразовать строку, содержащую не git символы. Здесь строка содержит '\t', поэтому возникает ошибка.

Простой способ преобразовать его в список целых чисел состоит в том, чтобы сделать это (строка содержит числа, разделенные '\t', затем используйте '\t' вместо ' ' внутри split()):

lst = list(map(int, li[0].split(' ')))

Если в списке более одной такой строки li, вы можете использовать al oop для выполнения этой работы. Дайте мне знать, если я смогу ответить на ваш запрос.

1 голос
/ 01 февраля 2020

этот код может вам помочь. сначала вы должны разделить строку с помощью split()

, затем вы можете использовать map или for loop для преобразования строки в int

# with map

li=['192 245 3 881250949']
a=li[0].split(' ')

a = list(map(int,a))


# with for loop

li=['192 245 3 881250949']
a=li[0].split(' ')

for i in range (len(a)):
    a[i] = int(a[i])
1 голос
/ 01 февраля 2020

Вы можете использовать понимание вложенного списка:

l=[int(el) for s in li for el in s.split()]
print(l)

Вывод:

[192, 245, 3, 881250949]
0 голосов
/ 01 февраля 2020
li=['192 245 3 881250949']

print(li)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...