Осваиваем Python: преобразование строки в число на конкретных примерах
Иногда требуется преобразовать строку в целое число или в число с плавающей точкой для осуществления определённых операций в Python.
Если вы попробуете выполнить то или иное действие со строкой в виде чисел, то получите ошибку.
Этот код приведёт к ошибке :
str_a = ’50’ b = 10 c = str_a + b print (c)
В Python можно использовать функции int и float для преобразования строки в целое число или число с плавающей точкой до осуществления каких-либо операций.
Обновлено: 2023-05-31 19:18:07 Сергей Бензенко автор материала
Использование функции int() для преобразования строки в целое число
Рассмотрим следующий код:
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c header-42948-2">Преобразование десятичной строки в число с плавающей точкойМожно использовать класс float для того чтобы осуществить преобразование строки в число с плавающей точкой.
Пример использования float для преобразования строки:
#Пример преобразования string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c 1" data-ab-test="post_related" data-ab-key="yarpp">Модуль re Python – осваиваем регулярные выражения PythonЗамечание: если вы попытаетесь использовать здесь функцию int(), то получите ошибку.
Преобразование списка строковых чисел в список целых чисел
Если нужно преобразовать строки из чисел, содержащиеся в списке, тогда используйте генератора списков.
Будет создан новый список, в котором можно применить функцию int в каждой итерации.
Код:
#Пример преобразования string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)
Будет выведен новый список, состоящий из целых чисел, полученных из строк.
Преобразование списка строк в список чисел с плавающей точкой
Аналогичным образом можно использовать float вместо int для преобразования списка, содержащего строки из целых чисел. Рассмотрим пример:
Код для преобразования элементов списка в числа с плавающей точкой:
#Пример преобразования string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Пример преобразования строки с запятыми в число
Ну а как насчёт строки наподобие “5,000,000”? Если попытаетесь преобразовать ее, используя функции int() или float() , то получите ошибку.
Решением будет использование import locale . Например:
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )
Но это может вызвать проблемы в остальных локалях. Другое решение заключается в том, чтобы заменить запятые пустыми строками, то есть“”, а затем использовать функцию int.
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)
В результате получаем целое значение. Это же решение можно применить для конвертации строки в число с плавающей точкой.
Преобразование строки в число для расчёта високосного года -пример
Пользовательский ввод в Python- программах воспринимается как строка. В следующем примере пользователя просят ввести год. После ввода значения программа сообщает, високосный это год или нет.
Для этого введённое значение сначала преобразуется в целое число, а затем используется формула расчёта високосного года.
#Пример расчёта високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")
Вводимая строка сразу преобразуется в целое число, а затем используется для расчёта.
Как преобразовать целое число в строку?
Для преобразования целых чисел в строки в Python можно использовать функцию str() . Функция str() принимает объект, который может быть типа int , float , double и т.п.
Рассмотрим пример преобразования переменной типа int в строку, которая затем используется как строка для конкатенации:
#Примерпреобразованияint в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
str function for int to string456
Если бы целочисленная переменная была использована без функции str(), возникла бы ошибка TypeError.
Сергей Бензенко автор-переводчик статьи « 5 examples to Convert a Python string to int and float »
Python: Как преобразовать список в строку?
В этом коротком руководстве мы рассмотрим различные методы, которые можно использовать для преобразования списка Python в строку.
Зачем преобразовывать список Python в строку?
Преобразование списка Python в строку является обычным явлением, хотя наиболее распространенный случай использования, с которым я столкнулся, - это преобразование итерируемого объекта в строку, чтобы его можно было отобразить. Python предоставляет нам несколько способов преобразования списков Python в строку, эти методы не имеют конкретных ограничений для сравнения, и, следовательно, это сводится только к пониманию и удобству программистов этого метода.
Если это не так, я бы порекомендовал это решение, если вы новичок. Но не стесняйтесь пройти их все, если вам интересно их изучить.
Способы преобразования списка Python в строки
Используя join():
Наиболее распространенным и питоническим способом преобразования списка python в строку является использование метода join() . Он принимает итеративные объекты, последовательно присоединяет и возвращает их в виде строки. Однако значения в iterable должны иметь строковый тип данных, и в случае, если iterable содержит int, вы можете использовать второй метод.
string.join(iterable)
Здесь string является разделителем
iterable - Любой итерируемый объект - список, кортежи, набор и т.д.
Код для преобразования списка Python в строку с помощью join():
flexiple = ["Hire", "the", "top", "freelancers"] print(" ".join(flexiple)) #Output - "Hire the top freelancers"
Поскольку разделителем был пробел, строка содержит символы в списке, разделенные строкой.
Как упоминалось выше, попытка использовать итерацию, содержащую объект int , вернет typeerror . Следующее решение покажет вам, как это обойти.
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(flexiple))
Использование join() и map():
Поскольку методы join() принимают только строковые значения, мы используем map() для преобразования значений int в строку перед преобразованием списка python в строку. Методы map() выполняют определенную функцию для всех значений в итерации.
map(function, iterables)
function - Конкретная функция, которую вы хотите выполнить
iterable - Итерируемый объект, содержащий значения
Таким образом, передавая функцию str() , которая преобразует объекты в строку, мы можем преобразовать значения типа int, а затем объединить их в строку.
Код для преобразования списка Python в строку с помощью map() :
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] print(" ".join(map(str,flexiple))) #Output - "Hire the top 10 python freelancers"
Использование цикла:
Третий метод преобразования списка Python в строку - это написать цикл и добавить каждую итерацию в строку. Я бы предложил этот метод, если вы новичок в Python и не знакомы с такими понятиями, как join() и map() т.д. Код может быть длиннее, но он будет более читабельным для новичка.
flexiple = ["Hire", "the", "top", 10, "python","freelancers"] f1 = "" for i in flexiple: f1 += str(i)+ " " print(f1) #Output = "Hire the top 10 python freelancers "
Преобразование списка из str в int

Преобразование str в int
Добрый день, гуру программирования. Прошу помочь в такой проблеме. Мне необходимо сделать.
Преобразование типов int в str
Ребята как здесь реализовать правильно преобразование int в str;.
Задача на преобразование str в int
Задание подробно описано внутри алгоритма задачи.. Помогите найти ошибку чего то я где-то.
Вывод числа в drawstring, преобразование str в double и int
не работает прогррамма можеть кто поможет namespace WindowsFormsApplication12 < public.
Преобразование списка из String в int
Добрый день. Подскажите пожалуйста, в чем ошибка, у меня есть ArrayList со значениями,которые.
Автоматизируй это!

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29
устали мы с тобой, почему не читаешь?
Сообщение от Mindfure 
Выдает ошибку invalid literal for int() with base 10: '(1,'
что тут не так? перевел? давай подумаем вместе! хммм. чет он скобку показывает. О! Идея - может он не может скобку превратить в инт? как думаешь?
может удалить из строки скобки перед тем как сплитить по запятой? подчеркиваю - сплит надо делать по запятой а не пробелу
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
Welemir1, я чего-та не понимаю, но то, что у него уже в инте, ведь если нет, то должно быть так:
если так: (0, 2, 4, 1, 3), то просто цикл перебора элементов, они уже в инт.
Добавлено через 1 минуту
Получается у него кортеж, то там всё равно инты.
Добавлено через 9 секунд
Автоматизируй это!

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29
Сообщение от Damenikx 
я чего-та не понимаю,
да, у него '(0, 2, 4, 1, 3)'
Регистрация: 25.09.2016
Сообщений: 324
Damenikx, Нет, я отправил это серверу, а он преобразовал в str
conn.send((str)(key).encode('utf-8'))
Принятие клиентом:
data2 = sock.recv(16384) str2 = (data2.decode('utf-8'))
Автоматизируй это!

7102 / 4606 / 1214
Регистрация: 30.03.2015
Сообщений: 13,218
Записей в блоге: 29
просто он пишет список, приводит кортеж, а имеет в виду строку))) классика
Регистрация: 25.09.2016
Сообщений: 324
Welemir1, Из-за передачи она может полностью стать str?
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
Сообщение от Welemir1 
просто он пишет список, приводит кортеж, а имеет в виду строку))) классика
Я поэтому 3 раза читаю, 3 раза понять не могу.
Добавлено через 7 минут
Mindfure, вот: (сейчас Welemir1 будет ругаться )
1 2 3 4 5 6 7 8
str2 = '(1, 2, 3, 4, 5)' res1 = str2.replace('(',"") res2 = res1.replace(')',"") print(res2) for i in res2.split(', '): s = int(i) print(s)
Регистрация: 13.02.2016
Сообщений: 166
Сообщение от Mindfure 
Welemir1, Из-за передачи она может полностью стать str?
Не только может но и непременно станет
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Сообщение было отмечено Mindfure как решение
Решение
Mindfure, кучу переменных можно не делать, это я для вас, чтобы вы видели, как это происходит. Можно менять сразу же получившуюся строку:
1 2 3 4 5 6 7 8
str2 = '(1, 2, 3, 4, 5)' str2 = str2.replace('(', "") str2 = str2.replace(')', "") for i in str2.split(', '): s = int(i) print(type(s))
Добавлено через 1 минуту
Ещё можно через регулярки.
Добавлено через 4 минуты
Через регулярки, вот:
1 2 3 4 5 6
import re str2 = '(1, 2, 3, 4, 5)' line = re.sub('[(),]', '', str2) for i in line.split(' '): s = int(i) print(type(s), s)
Добавлено через 4 минуты
Ну и на закуску:
1 2 3 4
import re str2 = '(1, 2, 3, 4, 5)' x = [int(i) for i in re.sub('[(), ]', '', str2)] for i in x: print(type(i), i)
Регистрация: 25.09.2016
Сообщений: 324
Damenikx, Да, спасибо большое
4494 / 3242 / 1131
Регистрация: 21.03.2016
Сообщений: 7,985
Mindfure, а что бы не плясать с бубном передавайте объект
клиент
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import socket import pickle sock = socket.socket() sock.connect(('localhost', 9090)) obj = { 'a': 1, 'b': [2, 3], 'c': { 'c1': 'abc', } } print('Send:', obj) data = pickle.dumps(obj) sock.sendall(data) print('Close') sock.close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
import pickle BUFFER_SIZE = 4096 import socket sock = socket.socket() sock.bind(('', 9090)) sock.listen(1) print('Sock name: <>'.format(sock.getsockname())) while True: conn, addr = sock.accept() print('Connected:', addr) all_data = bytearray() while True: data = conn.recv(BUFFER_SIZE) if not data: break print('Recv: <>: <>'.format(len(data), data)) all_data += data print('All data (<>): <>'.format(len(all_data), all_data)) obj = pickle.loads(all_data) print('Obj:', obj) print('Close') conn.close()
результат
клиент
Send: >
Close
сервер
Sock name: ('0.0.0.0', 9090)
Connected: ('127.0.0.1', 2602)
Recv: 66: b'\x80\x03>q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x02K\x03eX\x01\x00\x00\x00cq\x04>q\x05X\x02\x00\x00\x00c1q\x06X\x03\x00\ x00\x00abcq\x07su.'
All data (66): b'\x80\x03>q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x02K\x03eX\x01\x00\x00\x00cq\x04>q\x05X\x02\x00\x00\x00c1q\x06X\x03\x00\ x00\x00abcq\x07su.'
Obj: >
Close
Массивы
Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе не должно требовать модификации исходного кода программы.
Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера, однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).
Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:
Primes = [2, 3, 5, 7, 11, 13]
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
В списке Primes — 6 элементов, а именно, Primes[0] == 2, Primes[1] == 3, Primes[2] == 5, Primes[3] == 7, Primes[4] == 11, Primes[5] == 13. Список Rainbow состоит из 7 элементов, каждый из которых является строкой.
Также как и символы строки, элементы списка можно индексировать отрицательными числами с конца, например, Primes[-1] == 13, Primes[-6] == 2.
Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len, например, len(A) == 6.
Рассмотрим несколько способов создания и считывания списков. Прежде всего можно создать пустой список (не содержащий элементов, длины 0), в конец списка можно добавлять элементы при помощи метода append. Например, если программа получает на вход количество элементов в списке n, а потом n элементов списка по одному в отдельной строке, то организовать считывание списка можно так:
A = []
for i in range(int(input()):
A.append(int(input())
В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец.
Для списков целиком определены следующие операции: конкатенация списков (добавление одного списка в конец другого) и повторение списков (умножение списка на число). Например:
A = [1, 2, 3]
B = [4, 5]
C = A + B
D = B * 3
В результате список C будет равен [1, 2, 3, 4, 5], а список D будет равен [4, 5, 4, 5, 4, 5]. Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i-й элемент списка:
A = [0] * int(input())
for i in range(len(A)):
A[i] = int(input())
Вывести элементы списка A можно одной инструкцией print(A), при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:
for i in range(len(A)):
print(A[i])
Здесь в цикле меняется индекс элемента i, затем выводится элемент списка с индексом i.
for elem in A:
print(elem, end = ' ')
В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in ['red', 'green', 'blue'] переменная elem будет последовательно принимать значения 'red', 'green', 'blue'.