如何使用正则表达式替换单词之间的空格?



我试图将一串单词和数字转换成一个列表,每个项目都用空格分隔,所以使用。replace(",").split(",")将是一个简单的解决方案,但不幸的是,有时对象名称中有多个单词,我希望将这些单词与_

连接起来。的例子:

office supplies 674.56 570.980487 755.84 682.360029
预期输出:

office_supplies 674.56 570.980487 755.84 682.360029

我发现了这个:只替换字母之间的空格

并尝试像这样实现它:

sample_line = "office supplies 674.56 570.980487 755.84 682.360029"
regex = re.compile(':%s/v(a)s(a)/1_2/g', re.I)
print(re.sub(p, r"12", line))

但它似乎并没有取代空格,我不是很尖锐的正则表达式,但根据链接的问题,它应该工作。

您可能会使用以下re.sub + split解决方案:

import re
s = 'office supplies 674.56 570.980487 755.84 682.360029'
print ( re.sub(r'(?<=[a-zA-Z])s+(?=[a-zA-Z])', '_', s).split() )

输出:

['office_supplies', '674.56', '570.980487', '755.84', '682.360029']

:

  • Regex(?<=[a-zA-Z])s+(?=[a-zA-Z])匹配1+被字母包围的空白
  • split将分割空白字符串
x=r'office supplies 674.56 570.980487 755.84 682.360029'
lead="_".join(x.split()[:2])
trail=" ".join(x.split()[2:])
expected_string = lead + " " + trail
print(expected_string)

最新更新