首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用regex替换单词之间的空格?

如何使用regex替换单词之间的空格?
EN

Stack Overflow用户
提问于 2022-07-04 07:02:00
回答 2查看 141关注 0票数 3

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

示例:

代码语言:javascript
运行
复制
office supplies 674.56 570.980487 755.84 682.360029

预期产出:

代码语言:javascript
运行
复制
office_supplies 674.56 570.980487 755.84 682.360029

我发现了这个:Replace spaces between letters only

并试图以这样的方式实现:

代码语言:javascript
运行
复制
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"\1\2", line))

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-04 07:13:02

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

代码语言:javascript
运行
复制
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() )

输出:

代码语言:javascript
运行
复制
['office_supplies', '674.56', '570.980487', '755.84', '682.360029']

在此:

only

  • split
  • Regex (?<=[a-zA-Z])\s+(?=[a-zA-Z])匹配由字母

包围的1+空格。

票数 4
EN

Stack Overflow用户

发布于 2022-07-04 09:44:52

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72852859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档