首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Regex:两个分隔符之间的单词-将前导分隔符替换为标点符号,但删除结尾分隔符

Python Regex:两个分隔符之间的单词-将前导分隔符替换为标点符号,但删除结尾分隔符
EN

Stack Overflow用户
提问于 2018-07-25 04:00:54
回答 3查看 202关注 0票数 1
代码语言:javascript
复制
test_str = '**Amount** : $25k  **Name** : James'

预期输出:

代码语言:javascript
复制
output: Amount: $25k, Name: James

我只能使用re.sub函数来移除/替换分隔符**单词**,但无法得到预期的结果。

此外,是否可以将代码泛化为在所有分隔符(**xx**,< xx>等)上实现?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-25 05:17:06

我使用re.sub的方法。第一个re.sub删除*,第二个re.sub添加逗号:

代码语言:javascript
复制
import re

test_str = '**Amount** : $25k  **Name** : James'

s = re.sub(r'\s*([^:\s]+)\s*:\s*([^\s]+)', r'\1: \2, ', re.sub(r'[\*\s]+', ' ', test_str)).rstrip(', ')
print(s)

输出:

代码语言:javascript
复制
Amount: $25k, Name: James

以*,<,>作为分隔符:

代码语言:javascript
复制
test_str = '**Amount** : $25k  **Name** : James <<Name2>> : Another <Name3> : Jack'

s = re.sub(r'\s*([^:\s]+)\s*:\s*([^\s]+)', r'\1: \2, ', re.sub(r'[\*<>\s]+', ' ', test_str)).rstrip(', ')
print(s)

输出:

代码语言:javascript
复制
Amount: $25k, Name: James, Name2: Another, Name3: Jack
票数 2
EN

Stack Overflow用户

发布于 2018-07-25 04:10:05

这对你来说应该是可行的

代码语言:javascript
复制
st='**Amount** : $25k  **Name** : James'

stage1=re.sub(r"\**","",st)

re.sub(r'(?<=\:\s\S\S\S\S\s)',",",stage1)

输出将是

代码语言:javascript
复制
'Amount : $25k , Name : James'

要匹配正则表达式,您必须查看在线正则表达式测试器,如this one

票数 0
EN

Stack Overflow用户

发布于 2018-07-25 13:56:33

一个正则表达式,但使用lambda:

代码语言:javascript
复制
re.sub(r"\*|\s(?=:)|(?<=\d)k\s*",lambda m:"k, " if "k" in m.group() else "",test_str)
'Amount: $25k, Name: James'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51506656

复制
相关文章

相似问题

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