杰瑞科技汇

Python tostring()方法如何格式化输出?

在 Python 中,"tostring" 通常指的是将对象转换为字符串表示的过程,Python 提供了多种方式来实现这一点,具体取决于对象的类型和所需的格式,以下是几种常见的情况和对应的格式化方法:

Python tostring()方法如何格式化输出?-图1
(图片来源网络,侵删)

基本数据类型的 str() 转换

Python 内置的 str() 函数可以将基本数据类型(如整数、浮点数、布尔值等)转换为字符串。

num = 42
str_num = str(num)  # '42'
pi = 3.14159
str_pi = str(pi)    # '3.14159'
flag = True
str_flag = str(flag)  # 'True'

使用 f-strings(格式化字符串字面量,Python 3.6+)

f-strings 是现代 Python 中最推荐的字符串格式化方式,语法简洁且高效。

name = "Alice"
age = 30
formatted_str = f"Name: {name}, Age: {age}"  # 'Name: Alice, Age: 30'
# 支持表达式和格式化选项
price = 19.99
formatted_price = f"Price: ${price:.2f}"  # 'Price: $19.99'

使用 str.format() 方法

这是 Python 2.6+ 和 3.x 中广泛支持的格式化方法,比 格式化更灵活。

template = "Hello, {}. You are {} years old."
result = template.format("Bob", 25)  # 'Hello, Bob. You are 25 years old.'
# 带索引和命名参数
template = "{0} has {1} {items}. {name} owns {items}."
result = template.format("Alice", 3, items="apples", name="Bob")  
# 'Alice has 3 apples. Bob owns apples.'

使用 运算符(旧式格式化)

Python 早期版本的字符串格式化方式,现已不推荐在新代码中使用。

Python tostring()方法如何格式化输出?-图2
(图片来源网络,侵删)
name = "Charlie"
age = 40
formatted_str = "Name: %s, Age: %d" % (name, age)  # 'Name: Charlie, Age: 40'

自定义对象的 __str____repr__ 方法

通过定义类的 __str____repr__ 方法,可以控制对象转换为字符串时的行为。

  • __str__:面向用户,可读性强的字符串表示。
  • __repr__:面向开发者, ideally 是能通过 eval() 重建对象的字符串(如果可能)。
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        return f"Person(name={self.name}, age={self.age})"
    def __repr__(self):
        return f"Person('{self.name}', {self.age})"
p = Person("Dave", 35)
print(p)        # 调用 __str__: 'Person(name=Dave, age=35)'
print(repr(p))   # 调用 __repr__: "Person('Dave', 35)"

JSON 序列化(json.dumps

对于复杂对象(如字典、列表),可以使用 json 模块将其转换为 JSON 格式的字符串。

import json
data = {"name": "Eve", "age": 28, "hobbies": ["reading", "coding"]}
json_str = json.dumps(data)  # '{"name": "Eve", "age": 28, "hobbies": ["reading", "coding"]}'

字节串(Bytes)转换为字符串

如果对象是字节串(bytes),需要指定编码(如 UTF-8)来解码为字符串。

byte_data = b"Hello, World!"
str_data = byte_data.decode("utf-8")  # 'Hello, World!'

使用 pprint 美化输出

对于嵌套或复杂的数据结构,pprint 模块可以生成更易读的字符串表示。

import pprint
data = {"a": [1, 2, 3], "b": {"x": 10, "y": 20}}
pprint.pprint(data)  # 格式化输出到控制台
str_repr = pprint.pformat(data)  # 获取格式化后的字符串

场景 方法 示例
基本类型转字符串 str() str(123)'123'
格式化字符串 f-strings f"Value: {x:.2f}"
通用格式化 str.format() "{} is {}".format("A", 1)
旧式格式化 运算符 "Name: %s" % "Alice"
自定义对象字符串 __str__ / __repr__ class MyClass: ...
JSON 序列化 json.dumps() json.dumps({"key": "value"})
字节解码 .decode() b"data".decode("utf-8")
美化复杂结构 pprint.pformat() pprint.pformat([1, 2, {"a": 3}])

根据具体需求选择合适的方法,f-strings 和 str.format() 是现代 Python 的首选。

分享:
扫描分享到社交APP
上一篇
下一篇