查找是否在字符串中找到了来自两个不同列表的两个元素



我有一个像这样的字符串:

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匹配单词边界

在替换字符串中,12从捕获组中获取值。它们之间的空间增加了所需的空间。

最新更新