Replace numbers with Roman numerals
我需要一种方法来用罗马数字等价物替换字符串中以数字表示的所有出现的数字。
示例:
My 3 Top Tips: Part 19 应输出My III Top Tips: Part XIX 。Se7en 应输出Se7en (因为字符7 不是一个‘字’)
这项工作的最佳方案似乎是罗马人。不幸的是,它不接受同时包含文本和数字的字符串。
我的想法是:
这看起来杂乱无章,容易出错,而且不是很像Python。更好的方法是什么?是否可以使用regex或list理解,或者两者的组合?
要查找不属于较大单词的数字,请使用带有单词边界锚定的regex:
1 | regex = re.compile(r"\b\d+\b") |
在您的示例中,只匹配
所以,使用这个答案中的
1 2 3 4 | def repl(match): return write_roman(int(match.group(0))) print(regex.sub(repl,"My 3 Top Se7en Tips: Part 19")) |
号
会得到
1 | My III Top Se7en Tips: Part XIX |