Как преобразовать строку в целое число в 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 — представляет собой систему счисления первого аргумента.
    Его значение может быть 0 и 2–36. Это необязательный аргумент. Если база не указана, по умолчанию используется 10 (десятичное целое число).

Обычно целые числа выражаются в шестнадцатеричной (основание 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битных чисел

Вопрос задан

9 месяцев назад

Изменён 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 или

struct + bitarray

  • 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.9931

P.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.