如何不使用if运算符与大量多行结构实现货币符号转对应单词?
问题需求
将包含货币符号的字符串转换为对应货币单词形式,输入输出示例如下:
输入:
around $98 million last week
above $10 million next month
about €5 billion past year
after £1 billion this day
输出:
around 98 million dollars last week
above 10 million dollars next month
about 5 billion euros past year
after 1 billion pounds this day
要求:不使用if运算符及大量多行结构实现该功能。
实现方案
可以利用字典映射结合正则表达式替换来实现,核心思路是用字典存储货币符号到对应单词的映射,通过正则匹配符号+数字的模式,替换时移除符号并追加对应的货币单词。
以Python为例,代码如下:
import re currency_map = {'$': 'dollars', '€': 'euros', '£': 'pounds'} texts = [ 'around $98 million last week', 'above $10 million next month', 'about €5 billion past year', 'after £1 billion this day' ] result = [re.sub(r'([$€£])(\d+)', lambda m: f'{m.group(2)} {currency_map[m.group(1)]}', text) for text in texts] for line in result: print(line)
代码说明
currency_map直接建立符号与单词的映射关系,无需if判断- 正则表达式
r'([$€£])(\d+)'匹配货币符号后跟数字的组合,捕获符号和数字两个分组 - 使用
lambda匿名函数作为re.sub的替换回调,直接通过字典获取对应货币单词完成替换 - 列表推导式批量处理所有输入文本,代码简洁紧凑,无大量多行结构
内容的提问来源于stack exchange,提问作者bashism
相关产品推荐
相关产品推荐

