我有一个像这样的字符串:
text = 'Your house is 2km away from school and 35dam away from the nearest hospital.'
我有两个类似的列表:
numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
measures = ['mm', 'cm', 'dm', 'm', 'dam', 'hm', 'km']
我想在任何可能的数字和度量值列表中的任何元素之间留一个空格,以便输出如下所示:
output: Your house is 2 km away from school and 35 dam away from the nearest hospital.
有没有任何方法可以将两个不同列表中的任何元素分隔开,这些元素一起出现在一个字符串中?
求你了,你能帮我吗??
我会用一个正则表达式来实现这一点:
import re
measures = ['mm', 'cm', 'dm', 'm', 'dam', 'hm', 'km']
regex = re.compiler(rf'(d)({'|'.join(measures)})b')
output = regex.sub(r'1 2', text)
说明:
d
匹配一个数字。其周围的CCD_ 2将其置于捕获组1中- CCD_ 3创建类似CCD_ 4的替代方案。它周围的CCD_ 5将其放入捕获组2中
b
匹配单词边界
在替换字符串中,1
和2
从捕获组中获取值。它们之间的空间增加了所需的空间。