Python中关于字符串format方法的基础问题请教

现有这么一个小需求, 求助一下: news = "{'1': 1, '2': 2}, {name}" 能否通过 format 只将{name}格式化成 Amy


Python中关于字符串format方法的基础问题请教
8 回复

可以室友格式替换符
"{‘1’: 1, ‘2’: 2}, {%s}" % (‘Amy’)


在Python里,str.format() 是处理字符串格式化的核心方法,比老式的 % 操作符更强大、更灵活。它的基本用法很简单:在字符串里用花括号 {} 作为占位符,然后在 format() 方法里按顺序传入要替换的值。

# 基础用法:按顺序填充
name = "小明"
age = 25
text = "我叫{},今年{}岁。".format(name, age)
print(text)  # 输出:我叫小明,今年25岁。

# 也可以通过索引指定位置,这样顺序可以打乱
text2 = "我今年{1}岁,名叫{0}。".format(name, age)
print(text2) # 输出:我今年25岁,名叫小明。

# 更清晰的做法是使用关键字参数
text3 = "我叫{name},今年{age}岁。".format(name="小红", age=22)
print(text3)  # 输出:我叫小红,今年22岁。

除了填充,还能在 {} 里加格式说明符来控制输出,比如数字的位数、对齐方式等,语法是 {字段名:格式说明}

# 控制浮点数精度为两位小数
pi = 3.1415926
print("圆周率大约是:{:.2f}".format(pi))  # 输出:圆周率大约是:3.14

# 设置宽度和对齐(>右对齐,<左对齐,^居中)
print("{:>10}".format("test"))   # 输出:      test (右对齐,宽度10)
print("{:<10}".format("test"))   # 输出:test      (左对齐,宽度10)
print("{:^10}".format("test"))   # 输出:   test   (居中对齐,宽度10)

# 组合使用:居中对齐,宽度10,保留两位小数
num = 12.345
print("{:^10.2f}".format(num))   # 输出:   12.35

从Python 3.6开始,更推荐使用f-string,它更简洁直观,在字符串前加 fF,直接把变量或表达式写在 {} 里就行,功能一样强大。

name = "小李"
score = 95.5
# 使用f-string
message = f"学生{name}的分数是{score:.1f}分。"
print(message)  # 输出:学生小李的分数是95.5分。

总结:掌握 format() 的索引、关键字和格式说明符就够用了,新项目直接用f-string更爽。

我想用 format 实现, 不然的话, 如果是这样的字符串呢? “{‘1’: 1, ‘2’: 2, ‘3’: ‘%s’}, {name}”

“{{‘1’:1,‘2’:2}}, {name}”.format(name=‘Amy’)

split()大括号,结果里没有引号的就是 name

了解了, 多谢

In [6]: def myformat(str,name):
…: return str.replace(’{name}’,name)
…:
…:

In [7]: myformat("{‘1’: 1, ‘2’: 2}, {name}", ‘Amy’)
Out[7]: “{‘1’: 1, ‘2’: 2}, Amy”

我就是这么做的, 只是想了解一下 format 能不能做。

回到顶部