json - python中用正则表达式去掉字符串中的冒号
问题描述
初学python,最近尝试爬数据,json字符串的value中有冒号,需要去掉。我的代码如下。 a和b都是value中会有冒号的字符串
import rea = 'Title:’Intern: Customer Experience + Innovation (CX+I) Intern Brands’'b = 'cmp:’Adecco: USA’,cmpesc:’Adecco: USA’'result = re.sub(’^(?:Title|cmp|cmpesc):.+(:)’,’’, a)
代码执行结果是只剩 Customer Experience + Innovation (CX+I) Intern Brands’,之前的内容全被删除了,而我想要的效果是只删intern之后的那个冒号(title后的冒号要保留)。请问大家该如何修改?
问题解答
回答1:import reresult = re.sub(’^(Title|cmp|cmpesc:)(.+):(.*)’,’123’,'Title:’Intern: Customer Experience + Innovation (CX+I) Intern Brands’')print(result) # Title:’Intern Customer Experience + Innovation (CX+I) Intern Brands’回答2:
这样的话:
’’.join(re.split(’(?<![Title|cmp|cmpesc]):’,a))
就好了
回答3:果然是我看错题目了....
回答4:不用去掉冒号,直接变成字典就行了~
>>> a = 'Title:’Intern: Customer Experience + Innovation (CX+I) Intern Brands’';b = 'cmp:’Adecco: USA’,cmpesc:’Adecco: USA’'>>> dict([s.split(’:’,1) for s in a.split(’,’)]){’Title’: '’Intern: Customer Experience + Innovation (CX+I) Intern Brands’'}>>> dict([s.split(’:’,1) for s in b.split(’,’)]){’cmpesc’: '’Adecco: USA’', ’cmp’: '’Adecco: USA’'}>>>
写成函数
a = 'Title:’Intern: Customer Experience + Innovation (CX+I) Intern Brands’'b = 'cmp:’Adecco: USA’,cmpesc:’Adecco: USA’'def fn(x): return dict((s.split(’:’,1) for s in x.replace('’','').split(’,’)))print(fn(a))print(fn(b))# {’Title’: ’Intern: Customer Experience + Innovation (CX+I) Intern Brands’}# {’cmp’: ’Adecco: USA’, ’cmpesc’: ’Adecco: USA’}
相关文章:
1. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析2. java - 3个dao的数据根据请求参数选择一个映射到一个url上,怎么写比较好?3. css - 手机端chrome打开github和bilibili等少数网站会发现地址栏周围也会有背景色4. docker 17.03 怎么配置 registry mirror ?5. javascript - 关于一段 for 循环代码执行顺序的问题6. javascript - 静态页面引公共头尾文件,js怎么写吖?7. java - Spring使用@Autowired失效但是getBean()可以执行成功8. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?9. docker网络端口映射,没有方便点的操作方法么?10. javascript - JS中如何实现 DIV内部和鼠标的距离