> 文档中心 > 面试案例-String Interpolation的实现(Python实现)

面试案例-String Interpolation的实现(Python实现)


博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
面试案例-String Interpolation的实现(Python实现)

目录

  • 题目
  • 代码
  • 测试

题目

之前我在《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 。