Python内置format函数,如何格式化字符串,以及格式规范语言详解

format是Python内置函数之一,用于对字符串进行格式化操作。它可以将不同类型的数据转换为字符串,并根据指定的格式进行格式化输出。

format函数语法:

  • 语法:format(value, format_spec='')
  • 格式化指定的值,并将其插入字符串的占位符内。
  1. 可以使用内置函数format()来格式化数字。
  2. format()函数的第一个参数是要格式化的数字,第二个参数是格式化的模板,使用逗号作为千位分隔符。

希望这些提示对你有帮助!

参数和返回值:

format函数的参数包括格式字符串和一个或多个要格式化的值,参数的类型如下:

  • format_string:字符串,用于指定格式化输出的格式。

  • *args:可变参数,要格式化的值。

format函数的返回值是格式化后的字符串。

示例:

format函数具有非常丰富的用法和功能,下面将列举出一些常见的用法。

1. 基本的占位符替换:使用{}作为占位符,并通过位置参数传递要替换的值。

示例:

name = 'Alice'
age = 25
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)

输出结果:

My name is Alice and I am 25 years old.

2. 使用位置参数:可以通过位置参数指定要替换的值的顺序。

示例:

name = 'Bob'
age = 30
formatted_string = "My name is {0} and I am {1} years old.".format(name, age)
print(formatted_string)

输出结果:

My name is Bob and I am 30 years old.

参数的数量可以是多个,但需要注意前后顺序对应。

3. 使用关键字参数:可以通过关键字参数指定要替换的值的字段名。

示例:

name = 'Charlie'
age = 35
formatted_string = "My name is {name} and I am {age} years old.".format(name=name, age=age)
print(formatted_string)

输出结果:

My name is Charlie and I am 35 years old.

4. 使用索引和字段名:可以在占位符中使用索引或字段名来引用要替换的值。

示例:

name = 'David'
age = 40
formatted_string = "My name is {0[0]} and I am {1[age]} years old.".format([name], {'age': age})
print(formatted_string)

输出结果:

My name is David and I am 40 years old.

5. 指定值的格式:可以通过格式规范语法来指定值的显示格式,如小数位数、对齐方式、填充字符等。

示例:

value = 123.45678
formatted_value = "{:.2f}".format(value)
print(formatted_value)

输出结果:

123.46

6. 使用名称或属性访问:可以通过名称或属性访问的方式来引用要替换的值。

示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person('Emily', 50)
formatted_string = "My name is {p.name} and I am {p.age} years old.".format(p=person)
print(formatted_string)

输出结果:

My name is Emily and I am 50 years old.

7. 嵌套的格式化:可以在格式规范语法中嵌套使用其他格式规范,实现复杂的格式化。

示例:

value = 1234.5678
formatted_value = "The value is {:{width}.{precision}f}".format(value, width=10, precision=2)
print(formatted_value)

输出结果:

The value is    1234.57

8. 对象的字符串表示:可以使用特殊的格式规范符号来访问对象的字符串表示,如!s!r!a

'!s' 会对值调用 str()'!r' 调用 repr() ,而 '!a' 则调用 ascii()

示例:

data = [1, 2, 3]
formatted_data = "Data: {!r}".format(data)
print(formatted_data)

输出结果:

Data: [1, 2, 3]

9. 指定进制:可以使用格式规范符号来指定整数的进制。

示例:

number = 42
binary = "{:b}".format(number)
octal = "{:o}".format(number)
hexadecimal = "{:x}".format(number)
print(binary, octal, hexadecimal)

输出结果:

101010 52 2a

10. 对齐文本:可以使用格式规范语法中的对齐符号来对文本进行对齐。

示例:

name = 'John'
formatted_name = "{:<10}".format(name)
print(formatted_name)

输出结果:

John

格式规范迷你语言

当涉及字符串格式化时,Python提供了一个强大而灵活的功能,即格式规范迷你语言。格式规范迷你语言允许您在格式化字符串时指定值的显示方式,例如小数位数、对齐方式、填充字符等。标准格式说明符的一般形式如下:

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

sign 选项仅适用于数字类型,它可以是以下之一:

各种对齐选项的含义如下:

示例:

1. 不同进制的输出: 使用 # 选项,并在其后添加进制标志。

示例:

binary = 0b101
octal = 0o10
hexadecimal = 0x2A
float_number = 3.0

print("{:#b}".format(binary))          # 0b101
print("{:#o}".format(octal))           # 0o10
print("{:#x}".format(hexadecimal))     # 0x2a
print("{:#X}".format(hexadecimal))     # 0x2A
print("{:#.0f}".format(float_number))  # 3.

2. 数值格式化: 可以使用格式规范指定数值的显示方式,例如小数位数、千位分隔符等。

示例:

value = 12345.6789
formatted_value = "The value is {:.2f}".format(value)
print(formatted_value)

程序输出:

The value is 12345.68

3. 字符串对齐: 可以使用格式规范指定字符串的对齐方式,包括左对齐、右对齐和居中对齐。

示例:

text = 'Hello'
left_aligned = "{:<10}".format(text)
right_aligned = "{:>10}".format(text)
center_aligned = "{:^10}".format(text)
print(left_aligned)
print(right_aligned)
print(center_aligned)

程序输出:

Hello     
     Hello
  Hello

4. 填充字符: 可以使用格式规范指定填充字符来填充对齐字符串。

示例:

text = 'Hello'
filled = "{:*^10}".format(text)
print(filled)

程序输出:

**Hello***

5. 宽度和精度控制: 可以使用格式规范指定字段的宽度和小数精度。

示例:

value = 3.14159
width_and_precision = "{:8.2f}".format(value)
print(width_and_precision)

程序输出:

    3.14

6. 符号和正负号控制: 可以使用格式规范指定正负号的显示方式。

示例:

number = -42
sign = "{:+}".format(number)
print(sign)

程序输出:

-42

7. 十六进制和二进制表示: 可以使用格式规范指定整数的十六进制和二进制表示。

示例:

value = 42
hexadecimal = "{:x}".format(value)
binary = "{:b}".format(value)
print(hexadecimal)
print(binary)

程序输出:

2a
101010

8. 百分比表示: 可以使用格式规范将数值表示为百分比形式。

示例:

value = 0.25
percentage = "{:.2%}".format(value)
print(percentage)

程序输出:

25.00%

9. 科学计数法表示: 可以使用格式规范将数值表示为科学计数法形式。

示例:

value = 12345.6789
scientific = "{:.2e}".format(value)
print(scientific)

程序输出:

1.23e+04

注意事项:

  • format函数通过占位符 {} 来指定要替换的位置,可以使用位置参数或关键字参数来传递要格式化的值。

  • 可以在占位符中使用索引或字段名来引用要替换的值。

  • 可以通过格式规范语法来指定值的显示格式,如小数位数、对齐方式、填充字符等。

  • 格式规范语法使用冒号 : 来指定,可以在占位符中使用 {索引:格式} 或 {字段名:格式} 的形式。

  • 格式规范语法非常灵活,可以根据需要进行各种格式化操作,如数字的精度控制、日期的格式化、对齐方式等。

  • format函数可以与其他字符串操作函数一起使用,如splitjoin等,以实现更复杂的字符串处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值