Как преобразовать строку в целое число в Python
30.11.20202020-11-30T21:48:44+03:002021-01-18T10:07:22+03:00 Python Комментариев нет
Все типы данных в Python, включая целые числа и строки, являются объектами. Часто при написании кода Python вам необходимо преобразовать один тип данных в другой. Например, чтобы выполнить математическую операцию с числом, представленным в виде строки, его необходимо преобразовать в целое число.
В этой статье мы покажем вам, как преобразовать строку Python в целое число.
Содержание
Функция Python
int()
Встроенная функция int()
возвращает десятичный целочисленный объект из заданного числа или строки. Он имеет следующий вид:
int(x, base=10)
Функция принимает два аргумента:
x
— строка или число, которое нужно преобразовать в целое число.-
base
— представляет собой систему счисления первого аргумента.
Обычно целые числа выражаются в шестнадцатеричной (основание 16), десятичной (основание 10), восьмеричной (основание 8) или двоичной (основание 2) нотации.
Если данная строка не может быть представлена как целое число, функция вызовет исключение ValueError
.
Преобразование строки Python в целое число
В Python «строка» — это список символов, который объявляется с использованием одинарных ( '
), двойных ( "
) или тройных кавычек ( """
).
Если переменная, содержащая только числа, объявляется с использованием кавычек, ее тип данных устанавливается на String. Рассмотрим следующий пример:
days = "23" type(days)
Функция type()
показывает нам, что переменная days
является объектом String
.
<type 'str'>
Попробуем произвести математическую операцию с переменной:
print(days+5)
Python TypeError
исключения TypeError
потому что он не может выполнить вычисление сложения со строкой и целым числом:
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects
Чтобы преобразовать строковое представление десятичного целого числа в int
, передайте строку в функцию int()
, которая возвращает десятичное целое число:
days = "23"days_int = int(days)
type(days_int)
<type 'int'>
Если вы сейчас попытаетесь выполнить вычисления, операция суммирования будет выполнена успешно:
print(days_int+5)
28
Если число включает запятые, отмеченные тысячами, миллионами и т.
int()
:total = "1,000,000"int(total.replace(",", ""))
1000000
При преобразовании строк, представляющих целые числа в разных системах счисления, убедитесь, что вы используете правильное base
.
Например, в шестнадцатеричной системе число 54732 представлено как D5CF
. Чтобы преобразовать его в десятичное целое, вам нужно использовать основание 16:
int("D5CF", 16)
54735
Если вы D5CF
строку D5CF
в функцию int()
без установки базы, она выдаст исключение ValueError
:
int("D5CF")
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'D5CF'
Выводы
В Python вы можете преобразовать строку в целое число с помощью функции int()
.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
python: преобразовать строку бит (‘0’, ‘1’) в массив знаковых 32битных чисел
Вопрос задан
Изменён 8 месяцев назад
Просмотрен 163 раза
Есть срока бит: '01010101...'
Подскажите как поэлегантнее преобразовать ее в массив 32битных знаковых чисел?
Решение в лоб работает, но оно некрасивое 🙂
nums = [] for i in range(0, len(bits), 32): value = int(bits[i:i + 32], 2) nums.append(value if value <= 0x7fffffff else (value - 4294967296)) return nums
Что-нибудь из арсенала numpy
или
- python
- python-3. x
- numpy
- struct
8
Если на «голом» Python, то я бы сделал в два отдельных этапа: преобразование битов в байты, потом преобразование байт в знаковые инты. Получится длиннее, но без вычитаний магических чисел:
def bits_to_bytes(bits: str): for i in range(0, len(bits), 8): yield int(bits[i : i + 8], 2) def bytes_to_ints(b: bytes): for i in range(0, len(b), 4): yield int.from_bytes(b[i : i + 4], "big", signed=True) import random n = 10 # В итоге должно получиться 10 чисел bits = "".join(random.choices("01", k=8 * 4 * n)) print(bits) bts = bytes(bits_to_bytes(bits)) print(bts) ints = list(bytes_to_ints(bts)) print(ints)
Пример вывода:
10010011000101110011111000111100100110111110011001001001110111100110110001101000011010011011101011001011011110110010101010000110110001010000000010100100011010111101110101100111100110100011111001111010101110110011111100011100000110000011001110111000010010011111010011101010110101110110100011000000001101111000010110100101 b'\x93\x17><\x9b\xe6I\xdelhi\xba\xcb{*\x86\xc5\x00\xa4k\xddg\x9a>z\xbb?\x1c\x183\xb8I\xf4\xea\xd7h\xc07\x85\xa5' [-1827193284, -1679406626, 1818782138, -881120634, -989813653, -580412866, 2059091740, 406042697, -185936024, -1070103131]
2
как вариант
def f(x): return np. packbits(np.fromiter(x, dtype='b'), bitorder='big').view(dtype='>i4')
>>> x = f'{-987654321 & 0xffffffff:032b}{1234567890:032b}' >>> x '1100010100100001100101110100111101001001100101100000001011010010' >>> f(x) array([-987654321, 1234567890], dtype=int32)
Голый питон без циклов. Строка переводится в целое число, целое число в массив байт, массив байт в массив четырёхбайтовых целых, массив четырёхбайтовыx целых в массив целых. По пути порядок значений перевернулся:
import array def bits_to_ints(bits): assert len(bits) % 32 == 0 i = int(bits, 2) b = i.to_bytes(len(bits) // 8, 'little', signed=False) a = array.array('i') a.frombytes(b) return list(a[::-1]) bits = ( '10000000000000000000000000000000' # -2147483648 '11111111111111111111111111110110' # -10 '11111111111111111111111111111111' # -1 '00000000000000000000000000000000' # 0 '00000000000000000000000000000010' # 2 '00000000000000000000000000010100' # 20 '01111111111111111111111111111111' # 2147483647 ) print(bits_to_ints(bits))
$ python restore_ints. 9 2.9931P.S. Это извращение. Если вы понимаете почему в конце нужно перевернуть массив — вы молодец.
P.P.S Последнее преобразование в
list
можно не делать. Целые вarray
такие же целые как и любые другие.Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Преобразование строки в целое число – TecAdmin
Строка представляет собой последовательность символов, чисел и специальных символов вместе. Целое число — это набор чисел, который включает ноль, отрицательные и положительные числа без каких-либо десятичных или дробных частей. Тип данных — это классификация данных, которая сообщает компилятору или интерпретатору, как программист намерен использовать данные. Подобно другим языкам программирования, Python также поддерживает преобразования типов данных.
Advertisement
В этом руководстве описывается, как преобразовать строку Python в int и наоборот.
Python Convert String to int
Используйте функцию Python
int()
для преобразования строкового значения в целое число в Python. Эта функция принимает два параметра: один — строка в кавычках, а второй — необязательное основание для представления данных.Используйте следующий синтаксис для возврата строкового значения в виде целого числа
int("число", base=base)Откройте оболочку Python для запуска тестов ниже:
>>> напечатать(целое(«100»)) 100
>>> print(int(«100»))
100
Вы также можете проверить тип значения, хранящегося в переменной. Например, сохраните число как строку в переменной и убедитесь, что тип — «str». Затем преобразуйте строку Python в int и снова проверьте тип значения. Вы обнаружите, что тип значения — int.
# Присвоить число как строку переменной >>> с = «100» # Проверяем тип данных >>> тип(ы) <тип 'строка'> # Python Преобразование строки в int >>> с = целое (ы) # Снова проверьте тип данных >>> тип(ы) <тип 'целое число'>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Присвоить число переменной
>>> s = «100»
# Проверить тип данных
>>> type(s)
# 9 Python Преобразовать строку в int
>>> s = int(s)
# Снова проверьте тип данных
>>> type(s)
Ввод должен содержать числовые значения (0 -9), больше ничего.
Например, если входное значение содержит нечисловые значения (например, алфавиты, символы), будет выдано сообщение об ошибке с недопустимым литералом. См. пример ниже:
>>> с = ’10е’ >>> >>> с = целое (ы) Traceback (последний последний вызов): Файл «
«, строка 1, в ValueError: неверный литерал для int() с основанием 10: ’10v0′
1
2
3
4
5
6
>>> S = ’10E’
>>>
>> S = Int (S)
>>>
Traceback (последний последний вызов):
Файл «
«, строка 1, в ValueError: неверный литерал для int() с основанием 10: ’10v0′
Python Convert Integer to String
Вы также можете преобразовать числовое значение в строковое значение. Используйте функцию python str() для преобразования целочисленного значения в строку.
Синтаксис функции Python str():
str(число)Запустите пример в консоли Python.
>>> печать (стр (100)) 100
>>> print(str(100))
100
Запустите демонстрацию преобразования типов, проверив тип данных. Запустите приведенные ниже команды в оболочке Python одну за другой.
# Назначить число в качестве промежуточной переменной >>> с = 100 # Проверяем тип данных >>> тип(ы) <класс 'целое число'> # Преобразование целого числа в строку >>> s = ул(ы) # Снова проверьте тип данных >>> тип(ы) <класс 'ул'>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Присвоить число как inter переменной
>>> s = 100
# Проверить тип данных
>>> type(s)
# 9 integer to convert строка
>>> s = str(s)
# Снова проверьте тип данных
>>> type(s)
Вы можете видеть, что в первый раз тип данных отображается как «int». После преобразования типа с помощью функции Python str() новый тип данных отображается как «str».
Заключение
Метод Python int() используется для преобразования строкового значения в целочисленное значение. Это полезно для выполнения математических операций над числовым значением, хранящимся в виде строки.
Рекомендуемая литература: Вот еще несколько полезных примеров преобразования строк в языках программирования Python.
- Преобразование строки в нижний регистр в Python
- Преобразование строки в верхний регистр в Python
Pandas Преобразование строки в целое число
Распространение любви
) функций. В этой статье я объясню, как преобразовать один или несколько строковых столбцов в целочисленный тип с примерами.
Учебное пособие по PySpark для начинающих | Py…
Включите JavaScript
Учебное пособие по PySpark для начинающих | Примеры Python
1.
0-9]’, », регулярное выражение=Истина).astype(‘int64’) печать (df.dtypes)2. Синтаксис Series.astype()
Ниже приведен синтаксис
Series.astype()
. Эта функция принимаетdtype
,копий
иошибок
параметров.# astype() Синтаксис Series.astype(dtype, copy=True, errors='raise')2.1 Параметры функции astype()
Ниже приведены параметры функции astype().
dtype
— принимает тип numpy.dtype или Python для приведения всего объекта pandas к одному типу.копия
— Истинно по умолчанию. Вернуть копию, когдаcopy=True
.ошибок
— повышение по умолчанию
- Используйте «
повышение
» для создания исключения, когда невозможно выполнить приведение из-за недопустимых данных для типа.- Используйте «
игнорировать
», чтобы не вызывать исключений (подавлять ошибки/исключения). При ошибке вернуть исходный объект.2.2 Возвращаемое значение astype()
Возвращает серию с измененным типом данных.
Теперь давайте создадим Pandas DataFrame, используя данные из словаря Python, где столбцы:
Курсы
,Плата
,Продолжительность
иСкидка
.импортировать панд как pd импортировать numpy как np технологии= ({ «Курсы»: ["Spark", "PySpark", "Hadoop", "Pandas"], «Комиссия»: ['22000','25000','24000','26000'], «Продолжительность»: ['30дней','50дней','40дней','60дней'], 'Скидка':['1000','2300','2500','1400'] }) df = pd.DataFrame(технологии) печать (df.dtypes)Выход ниже выходного.
# Выход Объект курсов Платный объект Объект продолжительности Дисконтный объект тип: объект2. Pandas Convert String to Integer
Мы можем использовать Pandas
Series.astype()
для преобразования или преобразования строки в целое число в определенном столбце или серии DataFrame. Поскольку каждый столбец в DataFrame представляет собой серию pandas, я получу столбец из DataFrame в виде серии и использую функциюastype()
. В приведенном ниже примереdf.Fee
илиdf['Fee']
возвращает объект серии.Используйте {col: dtype, …}, где col — это метка столбца, а dtype — это тип numpy.dtype или Python, чтобы привести один или несколько столбцов DataFrame.
# преобразовать строку в целое число df["Плата"] = df["Плата"].astype(int) печать (df.dtypes) # Изменить конкретный тип столбца df.Fee = df['Плата'].astype('int') печать (df.dtypes)Выход ниже выходного.
# Выход Объект курсов Комиссия 32 Объект продолжительности Дисконтный объект тип: объект3. Преобразовать несколько строковых столбцов в целое число
Мы также можем преобразовать несколько строковых столбцов в целые числа, отправив dict типа данных имени столбца в функцию
astype()
. В приведенном ниже примере столбцы«Плата», «Скидка»
преобразуются из строки в целочисленный тип dtype.# Целочисленное преобразование нескольких столбцов df[['Плата', 'Скидка']] = df[['Плата', 'Скидка']].astype(int) печать (df.dtypes)Выход ниже выходного.
# Выход Объект курсов Комиссия 32 Объект продолжительности Скидка int32 тип: объект4. Использование pandas.to_numeric()
Кроме того, вы можете преобразовать все строковые столбцы в целочисленный тип в пандах, используя
to_numeric()
. Например, используйте функциюdf['Fee'] = pd.to_numeric(df['Fee'])
для преобразования столбца«Fee»
в целое число.# Использование pandas.to_numeric() df['Плата'] = pd.to_numeric(df['Плата']) печать (df.dtypes)Выход ниже выходного.
# Выход Объект курсов Комиссия int64 Объект продолжительности Дисконтный объект тип: объект 90-9]', '', регулярное выражение=Истина).astype('int64') печать (df.dtypes)Выдает тот же результат, что и выше.
5. Полный пример преобразования строки в целое число
импортировать панд как pd импортировать numpy как np технологии= ({ «Курсы»: ["Spark", "PySpark", "Hadoop", "Pandas"], «Комиссия»: ['22000','25000','24000','26000'], «Продолжительность»: ['30дней','50дней','40дней','60дней'], 'Скидка':['1000','2300','2500','1400'] }) df = pd.