# Python String Formatting

To make sure a string will display as expected, we can format the result with the `format()` method.

***

### String format()

The `format()` method allows you to format selected parts of a string.

Sometimes there are parts of a text that you do not control, maybe they come from a database, or user input?

To control such values, add placeholders (curly brackets `{}`) in the text, and run the values through the `format()` method:

#### Example

Add a placeholder where you want to display the price:

```python
price = 49
txt = "The price is {} dollars"
print(txt.format(price))
```

You can add parameters inside the curly brackets to specify how to convert the value:

#### Example

Format the price to be displayed as a number with two decimals:

```python
txt = "The price is {:.2f} dollars"
```

### Multiple Values

If you want to use more values, just add more values to the format() method:

```python
print(txt.format(price, itemno, count))
```

And add more placeholders:

#### Example

```python
quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
```

### Index Numbers

You can use index numbers (a number inside the curly brackets `{0}`) to be sure the values are placed in the correct placeholders:

#### Example

```python
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
```

Also, if you want to refer to the same value more than once, use the index number:

#### Example

```python
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
```

### Named Indexes

You can also use named indexes by entering a name inside the curly brackets `{carname}`, but then you must use names when you pass the parameter values `txt.format(carname = "Ford")`:

#### Example

```python
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))
```

## Python String format() Method

#### Example

Insert the price inside the placeholder, the price should be in fixed point, two-decimal format:

```python
txt = "For only {price:.2f} dollars!"
print(txt.format(price = 49))
```

### Definition and Usage

The `format()` method formats the specified value(s) and insert them inside the string's placeholder.

The placeholder is defined using curly brackets: {}. Read more about the placeholders in the Placeholder section below.

The `format()` method returns the formatted string.

***

### Syntax

*string*.format(*value1, value2...*)

### Parameter Values

| Parameter           | Description                                                                                                                                                                                                                                        |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *value1, value2...* | <p>Required. One or more values that should be formatted and inserted in the string.<br><br>The values are either a list of values separated by commas, a key=value list, or a combination of both.<br><br>The values can be of any data type.</p> |

***

### The Placeholders

The placeholders can be identified using named indexes `{price}`, numbered indexes `{0}`, or even empty placeholders `{}`.

#### Example

Using different placeholder values:

```python
txt1 = "My name is {fname}, I'm {age}".format(fname = "John", age = 36)
txt2 = "My name is {0}, I'm {1}".format("John",36)
txt3 = "My name is {}, I'm {}".format("John",36)
```

#### Formatting Types

Inside the placeholders you can add a formatting type to format the result:

| `:<` | Left aligns the result (within the available space)                                                     |
| ---- | ------------------------------------------------------------------------------------------------------- |
| `:>` | Right aligns the result (within the available space)                                                    |
| `:^` | Center aligns the result (within the available space)                                                   |
| `:=` | Places the sign to the left most position                                                               |
| `:+` | Use a plus sign to indicate if the result is positive or negative                                       |
| `:-` | Use a minus sign for negative values only                                                               |
| `:`  | Use a space to insert an extra space before positive numbers (and a minus sign before negative numbers) |
| `:,` | Use a comma as a thousand separator                                                                     |
| `:_` | Use a underscore as a thousand separator                                                                |
| `:b` | Binary format                                                                                           |
| `:c` | Converts the value into the corresponding unicode character                                             |
| `:d` | Decimal format                                                                                          |
| `:e` | Scientific format, with a lower case e                                                                  |
| `:E` | Scientific format, with an upper case E                                                                 |
| `:f` | Fix point number format                                                                                 |
| `:F` | Fix point number format, in uppercase format (show `inf` and `nan` as `INF` and `NAN`)                  |
| `:g` | General format                                                                                          |
| `:G` | General format (using a upper case E for scientific notations)                                          |
| `:o` | Octal format                                                                                            |
| `:x` | Hex format, lower case                                                                                  |
| `:X` | Hex format, upper case                                                                                  |
| `:n` | Number format                                                                                           |
| `:%` | Percentage format                                                                                       |

Example

```python
#Use "%" to convert the number into a percentage format:

txt = "You scored {:%}"
print(txt.format(0.25))

#Or, without any decimals:

txt = "You scored {:.0%}"
print(txt.format(0.25))

```

```python
#Use "X" to convert the number into upper-case Hex format:

txt = "The Hexadecimal version of {0} is {0:X}"

print(txt.format(255))
```

```python
#Use "d" to convert a number, in this case a binary number, into decimal number format:

txt = "We have {:d} chickens."
print(txt.format(0b101))
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pyclubs.org/python-course-guide/guides/python-string-formatting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
