面试案例-String Interpolation的实现(Python实现)
博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
目录
- 题目
- 代码
- 测试
题目
之前我在《Java面试案例-String interpolation的实现》(左侧标题为超链接,点击可以跳转)这篇文章中,展示了Java实现string interpolation的代码实践。最近在学习Python,遂用这门语言进行了实践。
在之前的文章中,题目是用英文描述,这里用中文简要复述一下:
- 在编程中,字符串插值是最常用的字符串操作之一。 尽管许多编程语言都提供内置的字符串插值支持,但在本次测验中,您需要自己实现它。不允许在您选择的编程语言中使用内置字符串插值机制。
- 在此挑战中,变量名称由双大括号表示:
{{ }}
。例如,给定字符串"您的姓名是{{ name }}
“,键值对对象{ "name": "Johnny" }
,它应该返回"您的名字是 Johnny”。 - 双大括号和变量名称之间的空格/制表符将被忽略。例如,“我的名字是
{{ name }}
”,"我的名字是{{ name}}
"和"我的名字是{{name}}
"是等效的。
代码
本文的思路和Java那篇文章一样,也是用正则表达式实现。
import redef interpolation(string, keyValues): for i in keyValues.keys(): string = re.sub(r'\${{\s*' + i + '\s*}}', keyValues[i], string) print("还剩余%d个变量未替换" % len(re.findall(r'\${{\s*\S+\s*}}', string))) return string
的确,Python的代码要简介一些。但是我还是更喜欢Java。
测试
调用测试一下:
kv1 = {'姓名': '农民工老王', '年龄': "30"}string1 = "博主的名字是${{姓名}},年龄是${{年龄}}。"print(interpolation(string1, kv1))kv2 = {'name': '农民工老王', 'city': "成都"}string2 = "博主的名字是${{ 姓名 }},所在的城市是${{ city }}。"print(interpolation(string2, kv2))
测试结果如下,完全正确:
如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。