搜尋

首頁  >  問答  >  主體

json - python中用正则表达式去掉字符串中的冒号

初学python,最近尝试爬数据,json字符串的value中有冒号,需要去掉。我的代码如下。
a和b都是value中会有冒号的字符串

import re
a = "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后的冒号要保留)。
请问大家该如何修改?

黄舟黄舟2786 天前1020

全部回覆(4)我來回復

  • 大家讲道理

    大家讲道理2017-04-18 10:32:40

    雷雷

    回覆
    0
  • PHPz

    PHPz2017-04-18 10:32:40

    這樣的話:

    ''.join(re.split('(?<![Title|cmp|cmpesc]):',a))

    就好了

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:32:40

    果然是我看錯題目了....

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 10:32:40

    不用去掉冒號,直接變成字典就行了~

    >>> 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'}
    

    回覆
    0
  • 取消回覆