str sayı dizgesini sayı int’ye dönüştürün, Python’da yüzer

Python’da bir sayı dizisini sayısal değerlere dönüştürmek istiyorsanız, tam sayılara dönüştürmek için int() ve kayan nokta sayılarına dönüştürmek için float() kullanın.

Aşağıda örnek kodla birlikte burada açıklanmıştır.

  • Temel kullanım
    • Sayısal dizeleri tam sayılara dönüştürün:int()
    • Bir sayı dizisini kayan nokta sayılarına dönüştürün:float()
  • Özel Kullanım
    • İkili, sekizli ve onaltılı gösterimdeki dizeleri sayılara dönüştürür
    • Üstel gösterimdeki dizeleri sayısal değerlere dönüştürür
    • Tam genişlikte Arap rakam dizilerini sayılara dönüştürün
    • Çince karakter dizisini sayılara dönüştürün

Sayısal bir değeri bir dizgeye dönüştürmek için str() kullanın.

Sayıları veya dizeleri çeşitli biçimlere dönüştürmek istiyorsanız, format() işlevini veya str.format() dize yöntemini kullanın. Ardından 0-doldurma, ikili, sekizli, onaltılı, üstel gösterim vb.’ye dönüştürebilirsiniz. Ayrıntılar için aşağıdaki makaleye bakın.

Ayrıca bir dizi listesini bir sayı listesine dönüştürebilir. Ayrıntılar için aşağıdaki makaleye bakın.

Sayısal dizeleri tam sayılara dönüştürün:int()

Bir sayı dizisini tamsayı türü sayılara dönüştürmek için int() kullanabilirsiniz.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Ondalık sayılar da dahil olmak üzere ondalık sayılar ve virgülle ayrılmış dizeler ValueError ile sonuçlanır.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Virgülle ayrılmış dizeler, replace() yöntemi kullanılarak virgül kaldırılarak (boş bir dizeyle değiştirilerek) dönüştürülebilir.

print(int('10,000'.replace(',', '')))
# 10000

Bir sayı dizisini kayan nokta sayılarına dönüştürün:float()

Bir sayı dizisini kayan noktalı sayı türüne dönüştürmek için bir float() kullanılabilir.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Tamsayı kısmı atlanmış olan dizeler, tamsayı kısmı 0 ile tamamlanarak dönüştürülür.

print(float('.23'))
# 0.23

Tamsayı dizeleri ayrıca kayan noktalı sayılara dönüştürülür.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

İkili, sekizli ve onaltılı gösterimdeki dizeleri sayılara dönüştürür

int() işlevinin ikinci argümanı olarak bir sayı tabanı belirtilirse, dize ikili, sekizli, onaltılı vb. olarak değerlendirilerek bir tamsayı int’ye dönüştürülebilir.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Önceki örneklerde olduğu gibi, atlanırsa, sayı ondalık sayı olarak kabul edilir.

print(int('100', 10))
print(int('100'))
# 100
# 100

Taban 0’a ayarlanırsa, dönüştürme dize önekine dayalıdır. Dize önekleri için aşağıya bakın.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Ön ekler ve onaltılı harfler büyük veya küçük harf olabilir.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

İkili, sekizli ve onaltılı sayıların ve dizelerin birbirine dönüştürülmesi hakkında bilgi için aşağıdaki makaleye bakın.

Üstel gösterimdeki dizeleri sayısal değerlere dönüştürür

Üstel gösterimdeki dizeler, float() ile doğrudan kayan tipe dönüştürülebilir.

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

Küçük harf e de büyük harfle E yazılabilir.

print(float('1.23E-4'))
# 0.000123

Tam genişlikte Arap rakam dizilerini sayılara dönüştürün

Tam genişlikteki Arap rakamları, int() veya float() ile doğrudan sayılara dönüştürülebilir.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Ancak, eksi ve ondalık nokta gibi simgeler tam genişlikte karakterlerse, bir ValueError oluşturulur.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Rakamlar tam genişlikte karakterlerse sorunsuz bir şekilde dönüştürülebilir, ancak eksi ve ondalık noktalar yarım genişlikte karakterlerdir. replace() yöntemini kullanarak tam genişlikli sembolleri yarım genişlikli sembollerle değiştirerek dönüştürme mümkündür.

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Çince karakter dizisini sayılara dönüştürün

unicodingata modülündeki unicodedata.numeric() işlevi, tek bir Unicode Çince karakterini kayan noktalı sayı türü numarasına dönüştürmek için kullanılabilir.

Tek bir harf değilse, bir hata oluşacaktır. Ayrıca sayısal olmayan karakterler de hataya neden olacaktır.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character