我正试图将一串单词和数字转换成一个列表,每一项都用空格分隔,因此使用.replace(“",”").split(",")是一个简单的解决方案,但不幸的是,有时对象名称中有多个单词,我希望这些单词与a_
示例:
office supplies 674.56 570.980487 755.84 682.360029
预期产出:
office_supplies 674.56 570.980487 755.84 682.360029
我发现了这个:Replace spaces between letters only
并试图以这样的方式实现:
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))
但是它似乎没有取代空间,我用正则表达式不是很尖锐,但是根据链接问题,它应该能工作。
发布于 2022-07-04 07:13:02
您可能会使用以下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']
在此:
only
split
与(?<=[a-zA-Z])\s+(?=[a-zA-Z])
匹配由字母包围的1+空格。
发布于 2022-07-04 09:44:52
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)
https://stackoverflow.com/questions/72852859
复制相似问题