c="632622199907012570"
year=c[6:10]#是从0开始计数的,所以是6-10
birthdy_month=c[10:12]
birthdy_day=c[12:14]
print(f"出生日期是:{year}年{birthdy_month}月{birthdy_day}日")
要求:修改后1. 在数字前后有空格 2.是1月,而不是01月
这是一个关于 f-string 格式化和 字符串/数字转换的经典问题。不仅希望解决数字前后的空格问题,还提到了一个更重要的需求:去掉月份和日期数字前的零(Leading Zero),比如将 01月 显示为 1月。
1. 解决月份和日期的前导零问题 (Removing Leading Zeros)
当您从身份证号字符串(c)中截取月份(birthdy_month)和日期(birthdy_day)时,它们是字符串类型,例如 '01'、'09'。要去除前导零,您需要将它们转换成整数(int),然后再用 f-string 打印出来。
示例:
| 原始字符串 | 转换为整数 (int()) | f-string 输出 |
|---|---|---|
'01' | 111 | f"{1}" → '1' |
'24' | 242424 | f"{24}" → '24' |
2. 解决数字前后的空格问题 (Adding Spaces Around Numbers)
在 f-string 中,您只需要在花括号 {} 的外部添加空格即可。
修正后的代码 (Corrected Code)
这是结合了去除前导零和添加空格的完整代码:
# 假设 c 是您的身份证号字符串(示例)
c = "42010120020124123X"
year = c[6:10]
birthdy_month = c[10:12]
birthdy_day = c[12:14]
# 核心修正:
# 1. 使用 int() 将月份和日期从字符串转换为整数,自动去除前导零
# 2. 在 f-string 花括号的外部添加空格
print(f"出生日期是:{year} 年 {int(birthdy_month)} 月 {int(birthdy_day)} 日")
执行结果:
出生日期是:2002 年 1 月 24 日

被折叠的 条评论
为什么被折叠?



