string — Κοινές λειτουργίες συμβολοσειρών

Πηγαίος κώδικας: Lib/string.py


Σταθερές συμβολοσειρών

Οι σταθερές που ορίζονται σε αυτό το module είναι:

string.ascii_letters

Η συγχώνευση των σταθερών ascii_lowercase και ascii_uppercase που περιγράφονται παρακάτω. Αυτή η τιμή δεν εξαρτάται από την τοποθεσία.

string.ascii_lowercase

Τα πεζά γράμματα 'abcdefghijklmnopqrstuvwxyz'. Αυτή η τιμή δεν εξαρτάται από την τοποθεσία και δεν θα αλλάξει.

string.ascii_uppercase

Τα κεφαλαία γράμματα 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. Αυτή η τιμή δεν εξαρτάται από την τοποθεσία και δεν θα αλλάξει.

string.digits

Η συμβολοσειρά '0123456789'.

string.hexdigits

Η συμβολοσειρά '0123456789abcdefABCDEF'.

string.octdigits

Η συμβολοσειρά '01234567'.

string.punctuation

Η συμβολοσειρά των ASCII χαρακτήρων που θεωρούνται χαρακτήρες στίξης στην τοποθεσία C: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.

string.printable

Η συμβολοσειρά των ASCII χαρακτήρων που θεωρούνται εκτυπώσιμοι από την Python. Αυτή είναι ένας συνδυασμός των digits, ascii_letters, punctuation και whitespace.

Σημείωση

Σύμφωνα με το σχεδιασμό, το string.printable.isprintable() επιστρέφει False. Ιδιαίτερα, το string.printable δεν είναι εκτυπώσιμο στην POSIX έννοια (βλ. LC_CTYPE).

string.whitespace

Μια συμβολοσειρά που περιέχει όλους τους ASCII χαρακτήρες που θεωρούνται χαρακτήρες κενών. Αυτό περιλαμβάνει τους χαρακτήρες space, tab, linefeed, return, formfeed και vertical tab.

Custom string formatting

The built-in string class provides the ability to do complex variable substitutions and value formatting via the format() method described in PEP 3101. The Formatter class in the string module allows you to create and customize your own string formatting behaviors using the same implementation as the built-in format() method.

class string.Formatter

Η κλάση Formatter έχει τις εξής δημόσιες μεθόδους:

format(format_string, /, *args, **kwargs)

Η κύρια μέθοδος API. Δέχεται μια συμβολοσειρά μορφοποίησης και ένα αυθαίρετο σύνολο θέσεων και ονομάτων παραμέτρων. Είναι απλώς ένας wrapper που καλεί τη μέθοδο vformat().

Άλλαξε στην έκδοση 3.7: Μια παράμετρος συμβολοσειράς μορφοποίησης είναι τώρα μόνο-θέση.

vformat(format_string, args, kwargs)

Αυτή η συνάρτηση κάνει όλη τη δουλειά της μορφοποίησης. Είναι εκτεθειμένη ως ξεχωριστή συνάρτηση για περιπτώσεις όπου θέλετε να περάσετε ένα προκαθορισμένο λεξικό παραμέτρων, αντί να αποσυμπιέσετε και να ξανασυμπιέσετε το λεξικό ως μεμονωμένες παραμέτρους χρησιμοποιώντας τη σύνταξη *args και **kwargs. Το vformat() κάνει τη δουλειά της διάσπασης της συμβολοσειράς μορφοποίησης σε δεδομένα χαρακτήρων και πεδία αντικατάστασης. Καλεί τις διάφορες μεθόδους που περιγράφονται παρακάτω.

Επιπροσθέτως, η κλάση Formatter ορίζει έναν αριθμό μεθόδων που προορίζονται να αντικατασταθούν από υποκλάσεις:

parse(format_string)

Διατρέχει το format_string και επιστρέφει ένα iterable από πλειάδες (literal_text, field_name, format_spec, conversion). Αυτό χρησιμοποιείται από τη vformat() για να σπάσει τη συμβολοσειρά σε κυριολεκτικό κείμενο ή πεδία αντικατάστασης.

Οι τιμές στην πλειάδα αντιπροσωπεύουν εννοιολογικά μια έκταση κυριολεκτικού κειμένου ακολουθούμενη από ένα μόνο πεδίο αντικατάστασης. Εάν δεν υπάρχει κυριολεκτικό κείμενο (κάτι που μπορεί να συμβεί αν δύο πεδία αντικατάστασης εμφανίζονται διαδοχικά), τότε literal_text θα είναι μια συμβολοσειρά μηδενικού μήκους. Εάν δεν υπάρχει πεδίο αντικατάστασης, τότε οι τιμές των field_name, format_spec και conversion θα είναι None. Η τιμή του field_name δεν τροποποιείται και η αυτόματη αρίθμηση των μη αριθμημένων πεδίων θέσης γίνεται από τη vformat().

get_field(field_name, args, kwargs)

Δεδομένου του field_name, το μετατρέπει σε ένα αντικείμενο που θα μορφοποιηθεί. Η αυτόματη αρίθμηση του field_name που επιστρέφεται από την parse() γίνεται από την vformat() πριν καλέσει αυτή τη μέθοδο. Επιστρέφει μια πλειάδα (obj, used_key). Η προεπιλεγμένη έκδοση δέχεται συμβολοσειρές της μορφής που ορίζεται στο PEP 3101, όπως «0[name]» ή «label.title». Τα args και kwargs είναι όπως περνούν στη vformat(). Η τιμή επιστροφής used_key έχει την ίδια σημασία με την παράμετρο key της get_value().

get_value(key, args, kwargs)

Επιστρέφει μια δεδομένη τιμή πεδίου. Το όρισμα key θα είναι είτε ακέραιος είτε συμβολοσειρά. Εάν είναι ακέραιος, αντιπροσωπεύει το δείκτη της θέσης του ορίσματος στα args· εάν είναι συμβολοσειρά, τότε αντιπροσωπεύει ένα ορισμένο όρισμα σε kwargs.

Η παράμετρος args είναι η λίστα των θέσεων ορισμάτων για τη vformat(), και η παράμετρος kwargs είναι το λεξικό των ορισμένων λέξεων-κλειδιών.

Για σύνθετα ονόματα πεδίων, αυτές οι συναρτήσεις καλούνται μόνο για το πρώτο συστατικό του ονόματος πεδίου· τα επόμενα συστατικά διαχειρίζονται μέσω κανονικών λειτουργιών προσπέλασης και ευρετηρίασης.

Συνεπώς για παράδειγμα, η έκφραση πεδίου “0.name” θα προκαλέσει την get_value() να κληθεί με ένα όρισμα key ίσο με 0. Το χαρακτηριστικό name θα αναζητηθεί μετά την επιστροφή της get_value() καλώντας την ενσωματωμένη συνάρτηση getattr().

Εάν το ευρετήριο ή η λέξη-κλειδί αναφέρεται σε ένα στοιχείο που δεν υπάρχει, τότε θα πρέπει να γίνει raise μια IndexError ή μια KeyError.

check_unused_args(used_args, args, kwargs)

Υλοποιεί τον έλεγχο για μη χρησιμοποιούμενα ορίσματα αν το επιθυμείτε. Τα ορίσματα σε αυτή τη συνάρτηση είναι το σύνολο όλων των κλειδιών ορισμάτων που αναφέρθηκαν πραγματικά στη συμβολοσειρά μορφοποίησης (ακέραιοι για θέσεις ορισμάτων και συμβολοσειρές για ορισμένα ορίσματα), και μια αναφορά στα args και kwargs που περάστηκαν στη vformat. Το σύνολο των μη χρησιμοποιούμενων args μπορεί να υπολογιστεί από αυτές τις παραμέτρους. Η check_unused_args() θεωρείται ότι κάνει raise μια εξαίρεση αν ο έλεγχος αποτύχει.

format_field(value, format_spec)

Η format_field() απλά καλεί τη καθολική ενσωματωμένη format(). Η μέθοδος παρέχεται ώστε οι υποκλάσεις να μπορούν να την αντικαταστήσουν.

convert_field(value, conversion)

Μετατρέπει την τιμή (που επιστρέφεται από την get_field()) δεδομένου ενός τύπου μετατροπής (όπως στην πλειάδα που επιστρέφεται από τη μέθοδο parse()). Η προεπιλεγμένη έκδοση κατανοεί τους τύπους μετατροπής “s” (str), “r” (repr) και “a” (ascii).

Format string syntax

Η μέθοδος str.format() και η κλάση Formatter μοιράζονται την ίδια σύνταξη για τις συμβολοσειρές μορφοποίησης (αν και στην περίπτωση της Formatter, οι υποκλάσεις μπορούν να ορίσουν τη δική τους σύνταξη συμβολοσειρών μορφοποίησης). Η σύνταξη σχετίζεται με αυτή των formatted string literals και template string literals, αλλά είναι λιγότερο εξελιγμένη και, ειδικότερα, δεν υποστηρίζει αυθαίρετες εκφράσεις.

Οι συμβολοσειρές μορφοποίησης περιέχουν «πεδία αντικατάστασης» που περιβάλλονται από άγκιστρα {}. Οτιδήποτε δεν περιέχεται σε άγκιστρα θεωρείται κυριολεκτικό κείμενο, το οποίο αντιγράφεται αμετάβλητο στην έξοδο. Εάν χρειάζεται να συμπεριλάβετε έναν χαρακτήρα άγκιστρου στο κυριολεκτικό κείμενο, μπορείτε να διαφύγετε τον χαρακτήρα βάζοντας τον εις διπλούν: {{ και }}.

Η γραμματική για μια περιοχή αντικατάστασης είναι η εξής:

replacement_field: "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name:        arg_name ("." attribute_name | "[" element_index "]")*
arg_name:          [identifier | digit+]
attribute_name:    identifier
element_index:     digit+ | index_string
index_string:      <any source character except "]"> +
conversion:        "r" | "s" | "a"
format_spec:       format-spec:format_spec

Σε λιγότερο επίσημους όρους, το πεδίο αντικατάστασης μπορεί να ξεκινά με ένα field_name που καθορίζει το αντικείμενο του οποίου η τιμή θα μορφοποιηθεί και θα εισαχθεί στην έξοδο αντί του πεδίου αντικατάστασης. Το field_name ακολουθείται προαιρετικά από ένα πεδίο conversion, το οποίο προηγείται από ένα θαυμαστικό '!', και μια format_spec, η οποία προηγείται από μια άνω και κάτω τελεία ':'. Αυτά καθορίζουν μια μη προεπιλεγμένη μορφή για την τιμή αντικατάστασης.

Δείτε επίσης την ενότητα Format specification mini-language.

Το field_name από μόνο του ξεκινάει με ένα arg_name το οποίο είναι είτε ένα αριθμός είτε μια λέξη-κλειδί. Εάν είναι αριθμός, αναφέρεται σε μια θέση, και εάν είναι λέξη-κλειδί, αναφέρεται σε μια ονομαστική λέξη-κλειδί. Ένα arg_name θεωρείται αριθμός εάν μια κλήση στην str.isdecimal() στη συμβολοσειρά επιστρέψει true. Εάν τα αριθμητικά arg_names σε μια συμβολοσειρά μορφοποίησης είναι 0, 1, 2, … στη σειρά, μπορούν όλα να παραλειφθούν (όχι μόνο μερικά) και οι αριθμοί 0, 1, 2, … θα εισαχθούν αυτόματα με αυτή τη σειρά. Επειδή το arg_name δεν είναι περιφραγμένο με διπλά εισαγωγικά, δεν είναι δυνατόν να καθοριστούν αυθαίρετα κλειδιά λεξικού (π.χ. οι συμβολοσειρές '10' ή ':-]') μέσα σε μια συμβολοσειρά μορφοποίησης. Το arg_name μπορεί να ακολουθείται από οποιονδήποτε αριθμό εκφράσεων ευρετηρίου ή χαρακτηριστικών. Μια έκφραση της μορφής '.name' επιλέγει το ονομαστικό χαρακτηριστικό χρησιμοποιώντας getattr(), ενώ μια έκφραση της μορφής '[index]' εκτελεί μια αναζήτηση ευρετηρίου χρησιμοποιώντας __getitem__().

Άλλαξε στην έκδοση 3.1: Οι προσδιοριστές θέσης μπορούν να παραλειφθούν για την str.format(), οπότε '{} {}'.format(a, b) είναι ισοδύναμο με '{0} {1}'.format(a, b).

Άλλαξε στην έκδοση 3.4: Οι προσδιοριστές θέσης μπορούν να παραλειφθούν για την Formatter.

Μερικά απλά παραδείγματα συμβολοσειρών μορφοποίησης:

"First, thou shalt count to {0}"  # References first positional argument
"Bring me a {}"                   # Implicitly references the first positional argument
"From {} to {}"                   # Same as "From {0} to {1}"
"My quest is {name}"              # References keyword argument 'name'
"Weight in tons {0.weight}"       # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}"   # First element of keyword argument 'players'.

Το πεδίο conversion προκαλεί μια μετατροπή τύπου πριν από τη μορφοποίηση. Συνήθως, η εργασία της μορφοποίησης μιας τιμής γίνεται από τη μέθοδο __format__() της ίδιας της τιμής. Ωστόσο, σε ορισμένες περιπτώσεις, είναι επιθυμητό να αναγκαστεί ένας τύπος να μορφοποιηθεί ως συμβολοσειρά, παρακάμπτοντας τον δικό του ορισμό μορφοποίησης. Με τη μετατροπή της τιμής σε συμβολοσειρά πριν καλέσετε τη __format__(), παρακάμπτεται η κανονική λογική μορφοποίησης.

Τρεις σημαίες μετατροπής υποστηρίζονται επί του παρόντος: '!s' που καλεί την str() στην τιμή, '!r' που καλεί την repr() και '!a' που καλεί την ascii().

Μερικά παραδείγματα:

"Harold's a clever {0!s}"        # Calls str() on the argument first
"Bring out the holy {name!r}"    # Calls repr() on the argument first
"More {!a}"                      # Calls ascii() on the argument first

Το πεδίο format_spec περιέχει μια προδιαγραφή για το πώς θα πρέπει να παρουσιάζεται η τιμή, συμπεριλαμβανομένων λεπτομερειών όπως το πλάτος πεδίου, η ευθυγράμμιση, η συμπλήρωση, η δεκαδική ακρίβεια κ.λπ. Κάθε τύπος τιμής μπορεί να ορίσει τη δική του «μίνι γλώσσα μορφοποίησης» ή ερμηνεία του format_spec.

Οι περισσότεροι ενσωματωμένοι τύποι υποστηρίζουν μια κοινή μίνι γλώσσα μορφοποίησης, η οποία περιγράφεται στην επόμενη ενότητα.

Ένα πεδίο format_spec μπορεί επίσης να περιλαμβάνει εσωτερικά πεδία αντικατάστασης. Αυτά τα εσωτερικά πεδία αντικατάστασης μπορεί να περιέχουν ένα όνομα πεδίου, μια σημαία μετατροπής και μια προδιαγραφή μορφοποίησης, αλλά δεν επιτρέπεται βαθύτερη εσωτερική τοποθέτηση. Τα πεδία αντικατάστασης εντός του format_spec αντικαθίστανται πριν ερμηνευτεί η format_spec συμβολοσειρά. Αυτό επιτρέπει τη δυναμική προδιαγραφή της μορφοποίησης μιας τιμής.

Δείτε την ενότητα Παραδείγματα μορφοποίησης για μερικά παραδείγματα.

Format specification mini-language

Οι «προδιαγραφές μορφοποίησης» χρησιμοποιούνται εντός πεδίων αντικατάστασης που περιέχονται σε μια συμβολοσειρά μορφοποίησης για να καθορίσουν πώς παρουσιάζονται οι μεμονωμένες τιμές (βλ. Format string syntax και f-strings, και t-strings). Μπορούν επίσης να περαστούν απευθείας στην ενσωματωμένη συνάρτηση format(). Κάθε μορφοποιήσιμος τύπος μπορεί να ορίσει πώς θα ερμηνευτεί η προδιαγραφή μορφοποίησης.

Most built-in types implement the following options for format specifications, although some of the formatting options are only supported by the numeric types.

Μια γενική σύμβαση είναι ότι μια κενή προδιαγραφή μορφοποίησης παράγει το ίδιο αποτέλεσμα όπως αν καλούσατε την str() στη τιμή. Μια μη κενή προδιαγραφή μορφοποίησης συνήθως τροποποιεί το αποτέλεσμα.

Η γενική μορφή ενός τυπικού specifier μορφοποίησης είναι:

format_spec:             [options][width_and_precision][type]
options:                 [[fill]align][sign]["z"]["#"]["0"]
fill:                    <any character>
align:                   "<" | ">" | "=" | "^"
sign:                    "+" | "-" | " "
width_and_precision:     [width_with_grouping][precision_with_grouping]
width_with_grouping:     [width][grouping]
precision_with_grouping: "." [precision][grouping] | "." grouping
width:                   digit+
precision:               digit+
grouping:                "," | "_"
type:                    "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g"
                         | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Αν μια έγκυρη τιμή align καθοριστεί, μπορεί να προηγείται από έναν χαρακτήρα fill που μπορεί να είναι οποιοσδήποτε χαρακτήρας και προεπιλέγεται σε κενό αν παραληφθεί. Δεν είναι δυνατή η χρήση ενός άγκιστρου (»{» ή «}») ως χαρακτήρα fill σε μια formatted string literal ή κατά τη χρήση της μεθόδου str.format(). Ωστόσο, είναι δυνατή η εισαγωγή ενός άγκιστρου με ένα εσωτερικό πεδίο αντικατάστασης. Αυτός ο περιορισμός δεν επηρεάζει την format() συνάρτηση.

Η σημασία των διαφόρων επιλογών ευθυγράμμισης είναι η εξής:

Επιλογή

Σημασία

'<'

Επιβάλλει το πεδίο να είναι αριστερά ευθυγραμμισμένο εντός του διαθέσιμου χώρου (αυτό είναι το προεπιλεγμένο για τα περισσότερα αντικείμενα).

'>'

Επιβάλλει το πεδίο να είναι δεξιά ευθυγραμμισμένο εντός του διαθέσιμου χώρου (αυτό είναι το προεπιλεγμένο για τους αριθμούς).

'='

Επιβάλλει την προσθήκη του padding μετά το πρόσημο (αν υπάρχει) αλλά πριν από τα ψηφία. Αυτό χρησιμοποιείται για την εκτύπωση πεδίων στη μορφή “+000000120”. Αυτή η επιλογή ευθυγράμμισης είναι έγκυρη μόνο για αριθμητικούς τύπους, εξαιρουμένης της complex. Γίνεται η προεπιλογή για τους αριθμούς όταν το “0” προηγείται άμεσα του πλάτους του πεδίου.

'^'

Επιβάλλει το πεδίο να είναι κεντραρισμένο εντός του διαθέσιμου χώρου.

Σημειώστε ότι το πλάτος του πεδίου θα είναι πάντα το ίδιο μέγεθος με τα δεδομένα που το γεμίζουν, εκτός αν καθοριστεί ένα ελάχιστο πλάτος πεδίου, έτσι ώστε η επιλογή ευθυγράμμισης να μην έχει καμία σημασία σε αυτή την περίπτωση.

Η επιλογή sign είναι έγκυρη μόνο για αριθμητικούς τύπους και μπορεί να είναι μία από τις ακόλουθες:

Επιλογή

Σημασία

'+'

Υποδεικνύει ότι θα πρέπει να χρησιμοποιείται ένα πρόσημο τόσο για θετικούς όσο και για αρνητικούς αριθμούς.

'-'

Υποδεικνύει ότι ένα πρόσημο θα πρέπει να χρησιμοποιείται μόνο για αρνητικούς αριθμούς (αυτή είναι η προεπιλεγμένη συμπεριφορά).

κενό

Υποδεικνύει ότι ένα κενό θα πρέπει να χρησιμοποιείται για θετικούς αριθμούς και ένα σημείο μείον για αρνητικούς αριθμούς.

Η επιλογή 'z' αναγκάζει τις αρνητικές μηδενικές τιμές κινητής υποδιαστολής να γίνουν θετικές μηδενικές μετά την στρογγυλοποίηση στην ακρίβεια μορφοποίησης. Αυτή η επιλογή είναι έγκυρη μόνο για τύπους παρουσίασης κινητής υποδιαστολής.

Άλλαξε στην έκδοση 3.11: Προστέθηκε η επιλογή 'z' (δείτε επίσης το PEP 682).

Η επιλογή '#' προκαλεί την «εναλλακτική μορφή» να χρησιμοποιείται για τη μετατροπή. Η εναλλακτική μορφή ορίζεται διαφορετικά για διαφορετικούς τύπους. Αυτή η επιλογή είναι έγκυρη μόνο για ακέραιους, κινητής υποδιαστολής και σύνθετους τύπους. Για τους ακέραιους, όταν χρησιμοποιείται δυαδική, οκταδική ή δεκαεξαδική έξοδος, αυτή η επιλογή προσθέτει το αντίστοιχο πρόθεμα '0b', '0o', '0x', ή '0X' στην τιμή εξόδου. Για τους τύπους κινητής υποδιαστολής και τους σύνθετους, η εναλλακτική μορφή προκαλεί το αποτέλεσμα της μετατροπής να περιέχει πάντα έναν χαρακτήρα δεκαδικής υποδιαστολής, ακόμη και αν δεν ακολουθείται από ψηφία. Κανονικά, ένας χαρακτήρας δεκαδικής υποδιαστολής εμφανίζεται στο αποτέλεσμα αυτών των μετατροπών μόνο αν ακολουθείται από ψηφίο. Επιπλέον, για τις μετατροπές 'g' και 'G', τα τελικά μηδενικά δεν αφαιρούνται από το αποτέλεσμα.

Το width είναι ένας δεκαδικός ακέραιος που ορίζει το ελάχιστο συνολικό πλάτος πεδίου, συμπεριλαμβανομένων τυχόν προθεμάτων, διαχωριστικών και άλλων χαρακτήρων μορφοποίησης. Εάν δεν καθοριστεί, το πλάτος πεδίου θα προσδιοριστεί από το περιεχόμενο.

Όταν δε δίνεται ρητή ευθυγράμμιση, η προεξοχή του πεδίου width με έναν μηδενικό ('0') χαρακτήρα ενεργοποιεί την ευαισθησία στο σήμα για την προσθήκη μηδενικών για τους αριθμητικούς τύπους, εξαιρουμένης της complex. Αυτό είναι ισοδύναμο με έναν χαρακτήρα fill '0' με τύπο alignment '='.

Άλλαξε στην έκδοση 3.10: Η προεξοχή του πεδίου width με '0' δεν επηρεάζει πλέον την προεπιλεγμένη ευθυγράμμιση για τις συμβολοσειρές.

Το precision είναι ένας δεκαδικός ακέραιος που δείχνει πόσα ψηφία θα πρέπει να εμφανίζονται μετά την υποδιαστολή για τους τύπους παρουσίασης 'f' και 'F', ή πριν και μετά την υποδιαστολή για τους τύπους παρουσίασης 'g' ή 'G'. Για τους τύπους παρουσίασης συμβολοσειρών, το πεδίο υποδεικνύει το μέγιστο μέγεθος πεδίου - με άλλα λόγια, πόσοι χαρακτήρες θα χρησιμοποιηθούν από το περιεχόμενο του πεδίου. Το precision δεν επιτρέπεται για τους τύπους παρουσίασης ακεραίων.

Η επιλογή grouping μετά από τα πεδία width και precision καθορίζει έναν διαχωριστή ομάδων ψηφίων για το ακέραιο και το κλασματικό μέρος ενός αριθμού αντίστοιχα. Μπορεί να είναι μια από τις ακόλουθες επιλογές:

Επιλογή

Σημασία

','

Εισάγει ένα κόμα κάθε 3 ψηφία για μια ακέραια αναπαράσταση τύπου 'd' και για τύπους παρουσίασης κινητής υποδιαστολής, εξαιρουμένης της 'n'. Για άλλους τύπους παρουσίασης, αυτή η επιλογή δεν υποστηρίζεται.

'_'

Εισάγει μια κάτω παύλα κάθε 3 ψηφία για μια ακέραια αναπαράσταση τύπου 'd' και για τύπους παρουσίασης κινητής υποδιαστολής, εξαιρουμένης της 'n'. Για ακέραιους τύπους αναπαράστασης, 'b', 'o', 'x', και 'X' κάτω παύλες εισάγονται κάθε 4 ψηφία. Για άλλους τύπους παρουσίασης, αυτή η επιλογή δεν υποστηρίζεται.

For a locale-aware separator, use the 'n' float presentation type or integer presentation type instead.

Άλλαξε στην έκδοση 3.1: Προστέθηκε η επιλογή ',' (δείτε επίσης το PEP 378).

Άλλαξε στην έκδοση 3.6: Προστέθηκε η επιλογή '_' (δείτε επίσης το PEP 515).

Άλλαξε στην έκδοση 3.14: Υποστήριξη της επιλογής grouping για το κλασματικό μέρος.

Τέλος, ο τύπος καθορίζει πώς θα πρέπει να παρουσιαστούν τα δεδομένα.

Οι διαθέσιμοι τύποι παρουσίασης συμβολοσειρών είναι:

Τύπος

Σημασία

's'

Μορφή συμβολοσειράς. Αυτός είναι ο προεπιλεγμένος τύπος για συμβολοσειρές και μπορεί να παραλειφθεί.

None

Το ίδιο με το 's'.

Οι διαθέσιμοι τύποι παρουσίασης ακεραίων είναι:

Τύπος

Σημασία

'b'

Δυαδική μορφή. Εξάγει τον αριθμό σε βάση 2.

'c'

Χαρακτήρας. Μετατρέπει τον ακέραιο στον αντίστοιχο χαρακτήρα unicode πριν την εκτύπωση.

'd'

Δεκαδικός ακέραιος. Εξάγει τον αριθμό σε βάση 10.

'o'

Οκταδική μορφή. Εξάγει τον αριθμό σε βάση 8.

'x'

Εξαδική μορφή. Εξάγει τον αριθμό σε βάση 16, χρησιμοποιώντας πεζά γράμματα για τα ψηφία πάνω από 9.

'X'

Εξαδική μορφή. Εξάγει τον αριθμό σε βάση 16, χρησιμοποιώντας κεφαλαία γράμματα για τα ψηφία πάνω από 9. Σε περίπτωση που έχει καθοριστεί το '#', το πρόθεμα '0x' θα μετατραπεί επίσης σε '0X'.

'n'

Number. This is the same as 'd', except that it uses the current locale setting to insert the appropriate digit group separators. Note that the default locale is not the system locale. Depending on your use case, you may wish to set LC_NUMERIC with locale.setlocale() before using 'n'.

None

Το ίδιο με το 'd'.

Εκτός από τους παραπάνω τύπους παρουσίασης, οι ακέραιοι μπορούν να μορφοποιηθούν και με τους τύπους παρουσίασης κινητής υποδιαστολής που αναφέρονται παρακάτω (εκτός από το 'n' και το None). Όταν το κάνουν αυτό, χρησιμοποιείται η float() για να μετατραπεί ο ακέραιος σε αριθμό κινητής υποδιαστολής πριν από τη μορφοποίηση.

Οι διαθέσιμοι τύποι παρουσίασης για τις float και Decimal τιμές είναι:

Τύπος

Σημασία

'e'

Η επιστημονική σημειογραφία. Για μια δεδομένη ακρίβεια p, μορφοποιεί τον αριθμό σε επιστημονική σημειογραφία με το γράμμα “e” να χωρίζει τον συντελεστή από τον εκθέτη. Ο συντελεστής έχει ένα ψηφίο πριν και p ψηφία μετά την δεκαδική υποδιαστολή, για ένα σύνολο p + 1 σημαντικών ψηφίων. Χωρίς κάποια δεδομένη ακρίβεια, χρησιμοποιεί μια ακρίβεια 6 ψηφίων μετά την δεκαδική υποδιαστολή για float, και δείχνει όλα τα ψηφία του συντελεστή για Decimal. Αν p=0, η δεκαδική υποδιαστολή παραλείπεται εκτός αν έχει καθοριστεί η επιλογή #.

For float, the exponent always contains at least two digits, and is zero if the value is zero.

'E'

Η επιστημονική σημειογραφία. Το ίδιο με το 'e' εκτός από το ότι χρησιμοποιεί ένα κεφαλαίο “E” ως χαρακτήρα διαχωρισμού.

'f'

Η σημειογραφία σταθερής υποδιαστολής. Για μια δεδομένη ακρίβεια p, μορφοποιεί τον αριθμό ως δεκαδικό αριθμό με ακριβώς p ψηφία μετά την δεκαδική υποδιαστολή. Χωρίς καμία δεδομένη ακρίβεια, χρησιμοποιεί μια ακρίβεια 6 ψηφίων μετά την δεκαδική υποδιαστολή για float, και χρησιμοποιεί μια ακρίβεια αρκετά μεγάλη για να δείξει όλα τα ψηφία του συντελεστή για Decimal. Αν p=0, η δεκαδική υποδιαστολή παραλείπεται εκτός αν έχει καθοριστεί η επιλογή #.

'F'

Η σημειογραφία σταθερής υποδιαστολής. Το ίδιο με το 'f', αλλά μετατρέπει το nan σε NAN και το inf σε INF.

'g'

Γενική μορφή. Για μια δεδομένη ακρίβεια p >= 1, αυτή στρογγυλοποιεί τον αριθμό σε p σημαντικά ψηφία και στη συνέχεια μορφοποιεί το αποτέλεσμα είτε σε μορφή σταθερής υποδιαστολής είτε σε επιστημονική σημειογραφία, ανάλογα με το μέγεθός του. Μια ακρίβεια 0 θεωρείται ισοδύναμη με μια ακρίβεια 1.

Οι ακριβείς κανόνες είναι οι εξής: υποθέστε ότι το αποτέλεσμα που μορφοποιείται με τον τύπο παρουσίασης 'e' και ακρίβεια p-1 θα είχε εκθέτη exp. Τότε, αν m <= exp < p, όπου m είναι -4 για floats και -6 για Decimals, ο αριθμός μορφοποιείται με τύπο παρουσίασης 'f' και ακρίβεια p-1-exp. Διαφορετικά, ο αριθμός μορφοποιείται με τύπο παρουσίασης 'e' και ακρίβεια p-1. Και στις δύο περιπτώσεις, τα ασήμαντα τελικά μηδενικά αφαιρούνται από τον σημαντικό αριθμό, και η δεκαδική υποδιαστολή αφαιρείται επίσης αν δεν υπάρχουν υπόλοιπα ψηφία μετά από αυτήν, εκτός αν έχει καθοριστεί η επιλογή '#'.

Χωρίς κάποια δεδομένη ακρίβεια, χρησιμοποιεί μια ακρίβεια 6 σημαντικών ψηφίων για float. Για Decimal, ο συντελεστής του αποτελέσματος μορφοποιείται από τα ψηφία του συντελεστή της τιμής. Η επιστημονική σημειογραφία χρησιμοποιείται για τιμές μικρότερες από 1e-6 σε απόλυτη τιμή και τιμές όπου η θέση του λιγότερο σημαντικού ψηφίου είναι μεγαλύτερη από 1, και η σημειογραφία σταθερής υποδιαστολής χρησιμοποιείται διαφορετικά.

Θετικό και αρνητικό άπειρο, θετικό και αρνητικό μηδέν, και nans, μορφοποιούνται ως inf, -inf, 0, -0 και nan αντίστοιχα, ανεξαρτήτως της ακρίβειας.

'G'

Γενική μορφή. Το ίδιο με το 'g', εκτός από το ότι αλλάζει σε 'E' αν ο αριθμός γίνει πολύ μεγάλος. Οι αναπαραστάσεις του απείρου και του NaN είναι επίσης κεφαλαία.

'n'

Number. This is the same as 'g', except that it uses the current locale setting to insert the appropriate digit group separators for the integral part of a number. Note that the default locale is not the system locale. Depending on your use case, you may wish to set LC_NUMERIC with locale.setlocale() before using 'n'.

'%'

Ποσοστό. Πολλαπλασιάζει τον αριθμό με το 100 και τον εμφανίζει σε σταθερή ('f') μορφή, ακολουθούμενη από ένα σύμβολο ποσοστού.

None

Για την float, είναι παρόμοιο με τον τύπο 'g', εκτός από το ότι όταν χρησιμοποιείται η σταθερή σημειογραφία για να μορφοποιηθεί το αποτέλεσμα, περιλαμβάνει πάντα τουλάχιστον ένα ψηφίο μετά την υποδιαστολή, και αλλάζει σε επιστημονική σημειογραφία όταν exp >= p - 1. Όταν η ακρίβεια δεν έχει καθοριστεί, η τελευταία θα είναι τόσο μεγάλη όσο χρειάζεται για να αναπαραστήσει τη δεδομένη τιμή πιστά.

Για την Decimal, αυτό είναι το ίδιο με το 'g' ή το 'G' ανάλογα με την τιμή του context.capitals για το τρέχον δεκαδικό περιεχόμενο.

Η συνολική επίδραση είναι να ταιριάζει η έξοδος της str() όπως έχει τροποποιηθεί από τους άλλους τροποποιητές μορφής.

Το αποτέλεσμα θα πρέπει να στρογγυλοποιείται σωστά σε μια δεδομένη ακρίβεια p ψηφίων μετά την υποδιαστολή. Η μέθοδος στρογγυλοποίησης για την float ταιριάζει με αυτήν της ενσωματωμένης συνάρτησης round(). Για την Decimal, θα χρησιμοποιήσει τη στρογγυλοποίηση του τρέχοντος context.

Οι διαθέσιμες μορφές παρουσίασης για την complex είναι οι ίδιες με αυτές για την float ('%' δεν επιτρέπεται). Και τα δύο πραγματικά και φανταστικά μέρη ενός μιγαδικού αριθμού μορφοποιούνται ως αριθμοί κινητής υποδιαστολής, σύμφωνα με τον καθορισμένο τύπο παρουσίασης. Διαχωρίζονται από το υποχρεωτικό πρόσημο του φανταστικού μέρους, το οποίο τερματίζεται από ένα j επίθημα. Εάν ο τύπος παρουσίασης λείπει, το αποτέλεσμα θα ταιριάζει με την έξοδο της str() (μιγαδικοί αριθμοί με μη μηδενικό πραγματικό μέρος περιβάλλονται επίσης από παρενθέσεις), πιθανώς τροποποιημένο από άλλους τροποποιητές μορφής.

Παραδείγματα μορφοποίησης

Αυτή η ενότητα περιέχει παραδείγματα της σύνταξης str.format() και σύγκριση με την παλιά μορφοποίηση %.

Στις περισσότερες περιπτώσεις η σύνταξη είναι παρόμοια με την παλιά μορφοποίηση %, με την προσθήκη του {} και με : να χρησιμοποιείται αντί του %. Για παράδειγμα, το '%03.2f' μπορεί να μεταφραστεί σε '{:03.2f}'.

Το νέο συντακτικό μορφοποίησης υποστηρίζει επίσης νέες και διαφορετικές επιλογές, οι οποίες εμφανίζονται στα παρακάτω παραδείγματα.

Πρόσβαση σε ορίσματα κατά θέση:

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c')  # 3.1+ only
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc')      # unpacking argument sequence
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad')   # arguments' indices can be repeated
'abracadabra'

Πρόσβαση σε ορίσματα κατά όνομα:

>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: 37.24N, -115.81W'

Πρόσβαση σε χαρακτηριστικά ορισμάτων:

>>> c = 3-5j
>>> ('The complex number {0} is formed from the real part {0.real} '
...  'and the imaginary part {0.imag}.').format(c)
'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
>>> class Point:
...     def __init__(self, x, y):
...         self.x, self.y = x, y
...     def __str__(self):
...         return 'Point({self.x}, {self.y})'.format(self=self)
...
>>> str(Point(4, 2))
'Point(4, 2)'

Πρόσβαση σε στοιχεία ορισμάτων:

>>> coord = (3, 5)
>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
'X: 3;  Y: 5'

Αντικατάσταση του %s και %r:

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"

Ευθυγράμμιση κειμένου και καθορισμός πλάτους:

>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # use '*' as a fill char
'***********centered***********'

Αντικατάσταση των %+f, %-f και % f και καθορισμός ενός προσήμου:

>>> '{:+f}; {:+f}'.format(3.14, -3.14)  # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14)  # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)  # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'

Αντικατάσταση των %x και %o και μετατροπή της τιμής σε διαφορετικές βάσεις:

>>> # format also supports binary numbers
>>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)
'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'

Χρήση του κόμματος ή της κάτω παύλας ως διαχωριστικό ομάδας ψηφίων:

>>> '{:,}'.format(1234567890)
'1,234,567,890'
>>> '{:_}'.format(1234567890)
'1_234_567_890'
>>> '{:_b}'.format(1234567890)
'100_1001_1001_0110_0000_0010_1101_0010'
>>> '{:_x}'.format(1234567890)
'4996_02d2'
>>> '{:_}'.format(123456789.123456789)
'123_456_789.12345679'
>>> '{:.,}'.format(123456789.123456789)
'123456789.123,456,79'
>>> '{:,._}'.format(123456789.123456789)
'123,456,789.123_456_79'

Έκφραση ενός ποσοστού:

>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 86.36%'

Χρήση ειδικής μορφοποίησης τύπου:

>>> import datetime as dt
>>> d = dt.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

Εμφωλευμένα ορίσματα και πιο σύνθετα παραδείγματα:

>>> for align, text in zip('<^>', ['left', 'center', 'right']):
...     '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]
>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
>>> int(_, 16)
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
...     for base in 'dXob':
...         print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
...     print()
...
    5     5     5   101
    6     6     6   110
    7     7     7   111
    8     8    10  1000
    9     9    11  1001
   10     A    12  1010
   11     B    13  1011

Συμβολοσειρές με πρότυπα ($-strings)

Σημείωση

Το χαρακτηριστικό που περιγράφεται εδώ εισήχθη στην Python 2.4∙ μια απλή μέθοδος δημιουργίας προτύπων βασισμένο σε κανονικές εκφράσεις. Προϋπήρξε της str.format(), των formatted string literals, και template string literals.

Δεν σχετίζεται με τις λεκτικές συμβολοσειρές (t-strings), οι οποίες εισήχθησαν στην Python 3.14. Αυτές αξιολογούνται σε αντικείμενα string.templatelib.Template, που βρίσκονται στο module string.templatelib.

Οι πρότυπες συμβολοσειρές παρέχουν απλούστερες αντικαταστάσεις συμβολοσειρών όπως περιγράφεται στο PEP 292. Μια βασική περίπτωση χρήσης για τις πρότυπες συμβολοσειρές είναι η διεθνοποίηση (i18n), καθώς σε αυτό το πλαίσιο η απλούστερη σύνταξη και λειτουργικότητα διευκολύνει τη μετάφραση σε σχέση με άλλες ενσωματωμένες δυνατότητες μορφοποίησης συμβολοσειρών στην Python. Ως ένα παράδειγμα μιας βιβλιοθήκης που βασίζεται σε πρότυπες συμβολοσειρές για i18n, δείτε το πακέτο flufl.i18n.

Οι πρότυπες συμβολοσειρές υποστηρίζουν αντικαταστάσεις με βάση το $, χρησιμοποιώντας τους εξής κανόνες:

  • $$ είναι μια διαφυγή; αντικαθίσταται με ένα μόνο $.

  • Το $identifier ορίζει μια θέση αντικατάστασης που ταιριάζει με ένα κλειδί αντιστοίχισης "identifier". Από προεπιλογή, "identifier" περιορίζεται σε οποιαδήποτε αλφαριθμητική συμβολοσειρά ASCII χωρίς διάκριση πεζών-κεφαλαίων (συμπεριλαμβανομένων των υπογραμμίσεων) που ξεκινά με μια υπογράμμιση ή ASCII γράμμα. Ο πρώτος μη αναγνωριστικός χαρακτήρας μετά τον χαρακτήρα $ τερματίζει αυτήν την προδιαγραφή θέσης.

  • Το ${identifier} είναι ισοδύναμο με το $identifier. Απαιτείται όταν οι έγκυροι χαρακτήρες αναγνωριστικού ακολουθούν τη θέση αλλά δεν είναι μέρος της θέσης, όπως στο "${noun}ification".

Η εμφάνιση οποιουδήποτε άλλου $ στη συμβολοσειρά θα έχει ως αποτέλεσμα να γίνει raise η ValueError.

The string module provides a Template class that implements these rules. The methods of Template are:

class string.Template(template)

Ο κατασκευαστής δέχεται ένα μόνο όρισμα, το οποίο είναι η πρότυπη συμβολοσειρά.

substitute(mapping={}, /, **kwds)

Εκτελεί την αντικατάσταση προτύπου, επιστρέφοντας μια νέα συμβολοσειρά. Το mapping είναι οποιοδήποτε αντικείμενο που μοιάζει με λεξικό με κλειδιά που ταιριάζουν με τις θέσεις στην πρότυπη συμβολοσειρά. Εναλλακτικά, μπορείτε να παρέχετε ορίσματα λέξεων-κλειδιών, όπου οι λέξεις-κλειδιά είναι οι θέσεις. Όταν δίνονται και τα δύο mapping και kwds και υπάρχουν διπλότυπα, οι θέσεις από το kwds έχουν προτεραιότητα.

safe_substitute(mapping={}, /, **kwds)

Όπως η substitute(), με την εξαίρεση ότι εάν λείπουν θέσεις από τα mapping και kwds, αντί να γίνει raise μια KeyError εξαίρεση, η αρχική θέση θα εμφανιστεί ανέπαφη στη συμβολοσειρά που προκύπτει. Επίσης, σε αντίθεση με την substitute(), οποιεσδήποτε άλλες εμφανίσεις του $ θα επιστρέφουν απλώς $ αντί να κάνουν raise την ValueError.

Ενώ άλλες εξαιρέσεις μπορούν να εμφανιστούν, αυτή η μέθοδος ονομάζεται «ασφαλής» διότι πάντα προσπαθεί να επιστρέψει μια χρησιμοποιήσιμη συμβολοσειρά αντί να κάνει raise μια εξαίρεση. Από μια άλλη άποψη, η safe_substitute() μπορεί να είναι οτιδήποτε άλλο εκτός από ασφαλής, καθώς θα αγνοήσει σιωπηλά κακοσχηματισμένα πρότυπα που περιέχουν απροσδιόριστους διαχωριστές, μη ταιριαστές αγκύλες ή θέσεις που δεν είναι έγκυροι Python αναγνωριστικοί χαρακτήρες.

is_valid()

Επιστρέφει False εάν το πρότυπο έχει μη έγκυρα placeholders που θα προκαλέσουν την substitute() να κάνει raise μια ValueError.

Added in version 3.11.

get_identifiers()

Επιστρέφει μια λίστα με τα έγκυρα αναγνωριστικά στο πρότυπο, με τη σειρά που εμφανίζονται για πρώτη φορά, αγνοώντας τυχόν μη έγκυρα αναγνωριστικά.

Added in version 3.11.

Τα στιγμιότυπα της Template παρέχουν επίσης ένα δημόσιο χαρακτηριστικό δεδομένων:

template

Αυτό είναι το αντικείμενο που μεταβιβάστηκε στο όρισμα template του κατασκευαστή. Γενικά, δεν θα πρέπει να το αλλάξετε, αλλά η πρόσβαση μόνο για ανάγνωση δεν επιβάλλεται.

Ακολουθεί ένα παράδειγμα χρήσης ενός προτύπου Template:

>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'

Προχωρημένη χρήση: μπορείτε να προχωρήσετε σε υποκλάσεις της κλάσης Template για να προσαρμόσετε τη σύνταξη του placeholder, τον χαρακτήρα διαχωριστή ή ολόκληρη την κανονική έκφραση που χρησιμοποιείται για την ανάλυση των συμβολοσειρών προτύπων. Για να το κάνετε αυτό, μπορείτε να υπερκαλύψετε αυτά τα χαρακτηριστικά της κλάσης:

  • delimiter – Είναι η κυριολεκτική συμβολοσειρά που περιγράφει έναν διαχωριστή εισαγωγής θέσης. Η προεπιλεγμένη τιμή είναι $. Σημειώστε ότι δεν θα πρέπει να είναι κανονική έκφραση, καθώς η υλοποίηση θα καλέσει re.escape() σε αυτή τη συμβολοσειρά όπως απαιτείται. Σημειώστε περαιτέρω ότι δεν μπορείτε να αλλάξετε τον διαχωριστή μετά τη δημιουργία της κλάσης (δηλαδή, ένας διαφορετικός διαχωριστής πρέπει να οριστεί στο namespace της υποκλάσης).

  • idpattern – Είναι η κανονική έκφραση που περιγράφει το μοτίβο για μη περιβλημένα placeholders. Η προεπιλεγμένη τιμή είναι η κανονική έκφραση (?a:[_a-z][_a-z0-9]*). Εάν αυτό δοθεί και το braceidpattern είναι None αυτό το μοτίβο θα ισχύει επίσης για τα περιβλημένα placeholders.

    Σημείωση

    Από τη στιγμή που η προεπιλεγμένη flags είναι re.IGNORECASE, το μοτίβο [a-z] μπορεί να ταιριάζει με ορισμένους μη-ASCII χαρακτήρες. Γι” αυτό χρησιμοποιούμε την τοπική σημαία a εδώ.

    Άλλαξε στην έκδοση 3.7: Το braceidpattern μπορεί να χρησιμοποιηθεί για να ορίσει ξεχωριστά μοτίβα που χρησιμοποιούνται μέσα και έξω από τις αγκύλες.

  • braceidpattern – Αυτό είναι όπως το idpattern αλλά περιγράφει το μοτίβο για τα περιβλημένα placeholders. Η προεπιλεγμένη τιμή είναι None που σημαίνει ότι θα επιστρέψει στο idpattern (δηλαδή, το ίδιο μοτίβο χρησιμοποιείται τόσο μέσα όσο και έξω από τις αγκύλες). Εάν δοθεί, σας επιτρέπει να ορίσετε διαφορετικά μοτίβα για τα περιβλημένα και μη περιβλημένα placeholders.

    Added in version 3.7.

  • flags – Οι σημαίες κανονικής έκφρασης που θα εφαρμοστούν κατά την μεταγλώττιση της κανονικής έκφρασης που χρησιμοποιείται για την αναγνώριση των αντικαταστάσεων. Η προεπιλεγμένη τιμή είναι re.IGNORECASE. Σημειώστε ότι το re.VERBOSE θα προστεθεί πάντα στις σημαίες, οπότε οι προσαρμοσμένες idpatterns πρέπει να ακολουθούν τις συμβάσεις για την εκτενή κανονική έκφραση.

    Added in version 3.2.

Εναλλακτικά, μπορείτε να παρέχετε το πλήρες μοτίβο κανονικής έκφρασης υπερκαλύπτοντας το χαρακτηριστικό κλάσης pattern. Εάν το κάνετε αυτό, η τιμή πρέπει να είναι ένα αντικείμενο κανονικής έκφρασης με τέσσερις ονομαστικές ομάδες καταγραφής. Οι ομάδες καταγραφής αντιστοιχούν στους κανόνες που δίνονται παραπάνω, μαζί με τον κανόνα για τα μη έγκυρα placeholders:

  • escaped – Αυτή η ομάδα ταιριάζει με την ακολουθία διαφυγής, π.χ. $$, στο προεπιλεγμένο μοτίβο.

  • named – Αυτή η ομάδα ταιριάζει με το όνομα του placeholder που δεν περιβάλλεται από αγκύλες· δεν θα πρέπει να περιλαμβάνει τον διαχωριστή στην ομάδα καταγραφής.

  • braced – Αυτή η ομάδα ταιριάζει με το όνομα του placeholder που περιβάλλεται από αγκύλες· δεν θα πρέπει να περιλαμβάνει ούτε τον διαχωριστή ούτε τις αγκύλες στην ομάδα καταγραφής.

  • invalid – Αυτή η ομάδα ταιριάζει με οποιοδήποτε άλλο μοτίβο διαχωριστή (συνήθως ένα μοναδικό διαχωριστή), και θα πρέπει να εμφανίζεται τελευταίος στην κανονική έκφραση.

Οι μέθοδοι σε αυτή την κλάση θα κάνουν raise μια ValueError εάν το μοτίβο ταιριάζει με το πρότυπο χωρίς να ταιριάζει με μία από αυτές τις ονομαστικές ομάδες.

Βοηθητικές συναρτήσεις

string.capwords(s, sep=None)

Χωρίζει το όρισμα σε λέξεις χρησιμοποιώντας την str.split(), μετατρέπει κάθε λέξη σε κεφαλαία χρησιμοποιώντας την str.capitalize(), και ενώνει τις κεφαλαίες λέξεις χρησιμοποιώντας την str.join(). Αν το προαιρετικό δεύτερο όρισμα sep είναι απών ή None, οι διαδοχικοί χαρακτήρες κενών αντικαθίστανται από έναν μόνο χώρο και τα αρχικά και τελικά κενά αφαιρούνται, διαφορετικά χρησιμοποιείται το sep για να χωρίσει και να ενώσει τις λέξεις.