我有这样的字符串:
strings = ['pic1.jpg siberian cat 24 25', 'pic2.jpg siemese cat 14 32', 'pic3.jpg american bobtail cat 8 13', 'pic4.jpg cat 9 1']
我想要的是将猫品种之间的空格替换为连字符,消除.jpg和品种中第一个单词之间的空格,以及数字
预期产出:
['pic1.jpg siberian_cat 24 25', 'pic2.jpg siemese_cat 14 32', 'pic3.jpg american_bobtail cat 8 13', 'pic4.jpg cat 9 1']
我试图构建如下模式:
[re.sub(r'(?<!jpg\s)([a-z])\s([a-z])\s([a-z])', r'\1_\2_\3', x) for x in strings ]
但是,我在.jpg和下一个单词之间添加了连字符
问题是“猫”并不总是放在单词组合的末尾
试试这个
[re.sub(r'jpg\s((\S+\s)+)cat', "jpg " + "_".join(x.split('jpg')[1].split('cat')[0].strip().split()) + "_cat", x) for x in strings ]
下面是一种使用
re.sub
和回调函数的方法:这张照片是:
下面是对使用的正则表达式模式的解释:
换句话说,以第三个list元素为例,regex模式匹配
american bobtail cat
,然后在lambda回调函数中用下划线替换所有空格相关问题 更多 >
编程相关推荐