Αν θέλετε να μετατρέψετε μια συμβολοσειρά αριθμών σε αριθμητικές τιμές στην Python, χρησιμοποιήστε την int() για να μετατρέψετε σε ακέραιους αριθμούς και την float() για να μετατρέψετε σε αριθμούς κινητής υποδιαστολής.
Τα παρακάτω εξηγούνται εδώ, μαζί με δείγμα κώδικα.
- Βασική χρήση
- Μετατροπή αριθμητικών συμβολοσειρών σε ακέραιους αριθμούς:
int()
- Μετατροπή μιας συμβολοσειράς αριθμών σε αριθμούς κινητής υποδιαστολής:
float()
- Μετατροπή αριθμητικών συμβολοσειρών σε ακέραιους αριθμούς:
- Ειδική χρήση
- Μετατρέπει συμβολοσειρές σε δυαδικό, οκταδικό και δεκαεξαδικό συμβολισμό σε αριθμούς
- Μετατρέπει συμβολοσειρές σε εκθετικό συμβολισμό σε αριθμητικές τιμές
- Μετατροπή σειρών αραβικών αριθμών πλήρους πλάτους σε αριθμούς
- Μετατροπή μιας συμβολοσειράς κινεζικών χαρακτήρων σε αριθμούς
Για να μετατρέψετε μια αριθμητική τιμή σε συμβολοσειρά, χρησιμοποιήστε την str().
Αν θέλετε να μετατρέψετε αριθμούς ή συμβολοσειρές σε διάφορες μορφές, χρησιμοποιήστε τη συνάρτηση format() ή τη μέθοδο συμβολοσειρών str.format(). Στη συνέχεια, μπορείτε να μετατρέψετε σε 0-fill, δυαδικό, οκταδικό, δεκαεξαδικό, εκθετικό συμβολισμό κ.λπ. Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες.
- ΣΧΕΤΙΚΑ:Μετατροπή μορφής στην Python, μορφή (συμπλήρωση 0, εκθετική σημειογραφία, δεκαεξαδικό σύστημα κ.λπ.)
Μπορεί επίσης να μετατρέψει μια λίστα συμβολοσειρών σε μια λίστα αριθμών. Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες.
- Μετατροπή αριθμητικών συμβολοσειρών σε ακέραιους αριθμούς: int()
- Μετατροπή μιας συμβολοσειράς αριθμών σε αριθμούς κινητής υποδιαστολής: float()
- Μετατρέπει συμβολοσειρές σε δυαδικό, οκταδικό και δεκαεξαδικό συμβολισμό σε αριθμούς
- Μετατρέπει συμβολοσειρές σε εκθετικό συμβολισμό σε αριθμητικές τιμές
- Μετατροπή σειρών αραβικών αριθμών πλήρους πλάτους σε αριθμούς
- Μετατροπή μιας συμβολοσειράς κινεζικών χαρακτήρων σε αριθμούς
Μετατροπή αριθμητικών συμβολοσειρών σε ακέραιους αριθμούς: int()
Μπορείτε να χρησιμοποιήσετε την int() για να μετατρέψετε μια συμβολοσειρά αριθμών σε αριθμούς ακέραιου τύπου.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Οι δεκαδικοί αριθμοί, συμπεριλαμβανομένων των δεκαδικών σημείων, και οι συμβολοσειρές που χωρίζονται με κόμμα θα οδηγήσουν σε ValueError.
# 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'
Οι συμβολοσειρές που χωρίζονται με κόμμα μπορούν να μετατραπούν αφαιρώντας το κόμμα (αντικαθιστώντας το με μια κενή συμβολοσειρά) χρησιμοποιώντας τη μέθοδο replace().
print(int('10,000'.replace(',', '')))
# 10000
Μετατροπή μιας συμβολοσειράς αριθμών σε αριθμούς κινητής υποδιαστολής: float()
Μια float() μπορεί να χρησιμοποιηθεί για τη μετατροπή μιας συμβολοσειράς αριθμών σε έναν τύπο αριθμού κινητής υποδιαστολής.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Οι συμβολοσειρές που παραλείπουν το ακέραιο μέρος μετατρέπονται συμπληρώνοντας το ακέραιο μέρος με 0.
print(float('.23'))
# 0.23
Οι ακέραιες συμβολοσειρές μετατρέπονται επίσης σε αριθμούς κινητής υποδιαστολής.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Μετατρέπει συμβολοσειρές σε δυαδικό, οκταδικό και δεκαεξαδικό συμβολισμό σε αριθμούς
Εάν ένα radix καθορίζεται ως δεύτερο όρισμα στην int(), το αλφαριθμητικό μπορεί να μετατραπεί σε ακέραιο int θεωρώντας το ως δυαδικό, οκταδικό, δεκαεξαδικό κ.λπ.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Όπως και στα προηγούμενα παραδείγματα, εάν παραλειφθεί, ο αριθμός θεωρείται δεκαδικός.
print(int('100', 10))
print(int('100'))
# 100
# 100
Εάν το radix έχει οριστεί σε 0, η μετατροπή βασίζεται στο πρόθεμα της συμβολοσειράς. Βλέπε παρακάτω για τα προθέματα συμβολοσειρών.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Τα προθέματα και τα δεκαεξαδικά αλφάβητα μπορούν να είναι είτε κεφαλαία είτε πεζά.
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
Δείτε το ακόλουθο άρθρο για πληροφορίες σχετικά με τη μετατροπή δυαδικών, οκταδικών και δεκαεξαδικών αριθμών και συμβολοσειρών.
- ΣΧΕΤΙΚΑ:Μετατροπή δυαδικών, οκταδικών και δεκαεξαδικών αριθμών και συμβολοσειρών μεταξύ τους στην Python
Μετατρέπει συμβολοσειρές σε εκθετικό συμβολισμό σε αριθμητικές τιμές
Οι συμβολοσειρές σε εκθετικό συμβολισμό μπορούν να μετατραπούν απευθείας σε τύπο float με την float().
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'>
Το μικρό e μπορεί επίσης να γράφεται με κεφαλαίο E.
print(float('1.23E-4'))
# 0.000123
Μετατροπή σειρών αραβικών αριθμών πλήρους πλάτους σε αριθμούς
Οι αραβικοί αριθμοί πλήρους πλάτους μπορούν να μετατραπούν απευθείας σε αριθμούς με τη μέθοδο int() ή float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Ωστόσο, εάν σύμβολα όπως το μείον και οι δεκαδικές τελείες είναι χαρακτήρες πλήρους πλάτους, θα δημιουργηθεί ένα ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Οι αριθμοί μπορούν να μετατραπούν χωρίς προβλήματα αν είναι χαρακτήρες πλήρους πλάτους, αλλά τα μείον και τα δεκαδικά σημεία είναι χαρακτήρες μισού πλάτους.Η μετατροπή είναι δυνατή με την αντικατάσταση των συμβόλων πλήρους πλάτους με σύμβολα μισού πλάτους χρησιμοποιώντας τη μέθοδο replace().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Μετατροπή μιας συμβολοσειράς κινεζικών χαρακτήρων σε αριθμούς
Η συνάρτηση unicodedata.numeric() στην ενότητα unicodedata μπορεί να χρησιμοποιηθεί για τη μετατροπή ενός μεμονωμένου κινεζικού χαρακτήρα Unicode σε αριθμό κινητής υποδιαστολής.
Εάν δεν είναι ένα μόνο γράμμα, θα εμφανιστεί σφάλμα. Επίσης, οι μη αριθμητικοί χαρακτήρες θα προκαλέσουν σφάλμα.
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