Python的格式化输入输出
# Python 的格式化输出和格式化输入## 格式化输出Python 提供了多种字符串格式化的方法:### 1. % 格式化(旧式格式化)```python
name = "Alice"
age = 25
print("Name: %s, Age: %d" % (name, age))
# 输出: Name: Alice, Age: 25
常用格式说明符:
%s
- 字符串%d
- 十进制整数%f
- 浮点数%x
- 十六进制整数
2. str.format() 方法(Python 2.6+)
print("Name: {}, Age: {}".format(name, age))
print("Name: {0}, Age: {1}".format(name, age)) # 使用位置索引
print("Name: {n}, Age: {a}".format(n=name, a=age)) # 使用关键字参数
格式控制:
pi = 3.1415926
print("Pi: {:.2f}".format(pi)) # 保留两位小数
# 输出: Pi: 3.14
3. f-strings(Python 3.6+)
print(f"Name: {name}, Age: {age}")
print(f"Next year you'll be {age + 1} years old")
格式控制:
pi = 3.1415926
print(f"Pi: {pi:.2f}") # 保留两位小数
格式化输入
Python 的格式化输入通常指从字符串中解析数据:
1. 字符串分割
data = "Alice,25,New York"
name, age, city = data.split(',')
age = int(age) # 需要类型转换
2. 正则表达式
import redata = "Name: Alice, Age: 25, City: New York"
match = re.search(r"Name: (\w+), Age: (\d+), City: (.+)", data)
if match:name, age, city = match.groups()age = int(age)
3. 使用 eval()(⚠️ 不推荐,有安全风险)
data = "{'name': 'Alice', 'age': 25, 'city': 'New York'}"
info = eval(data) # 将字符串转换为字典
4. 使用 json 模块(✅ 推荐)
import jsondata = '{"name": "Alice", "age": 25, "city": "New York"}'
info = json.loads(data) # 将JSON字符串转换为字典
5. 从标准输入读取并格式化
# 读取一行输入并分割
user_input = input("Enter name,age,city: ").split(',')
name, age, city = user_input
age = int(age)# 使用格式字符串提示
print(f"Hello {name}, you are {age} years old from {city}")
最佳实践建议
- 输出:Python 3.6+ 环境下优先使用
f-strings
- 输入:结构化数据优先使用
json
模块 - 安全性:避免使用
eval()
处理用户输入 - 类型转换:注意字符串到数字的类型转换