如何替换key + null值,Python

时间:2015-11-28 18:06:03

标签: python regex string text python-3.4

我需要用[key]: null替换(即完全删除)字符串中的任何s = 'a: 1, b: null, c: null, d: 0, e: null, f: 0.3' 。例如:

b: null

所需的输出已删除c: nulle: null'a: 1, d: 0, f: 0.3'

s.replace(', ,','')

可以使用null

删除逗号

有干净/健壮的方法吗?当然,密钥名称可能会发生变化,但需要删除值为re的密钥名称。

我认为out.println()(正则表达式)包可以提供帮助,但我之前没有使用它。

3 个答案:

答案 0 :(得分:3)

您可以使用:

r = re.sub(r'\b\w+:\s+null(,\s*|$)', '', s);

<强>输出:

a: 1, d: 0, f: 0.3

RegEx Demo

答案 1 :(得分:2)

s = 'a: 1, b: null, c: null, d: 0, e: null, f: 0.3'
# split with "," and then ":"
dataList = [d.strip().split(':') for d in s.split(',')]
# check if the tuple's second value is string "null"
dataListFilter = filter(lambda x: x[1].strip() != 'null', dataList)
# join back the results
result = ', '.join(map(lambda x: x[0] + ': ' + x[1], dataListFilter))
print result

<强> SUGGESTION : 对于这种类型的数据,我建议使用比字符串更好的数据结构。如果您可以控制数据,通常哈希(Python词典)就适合。

答案 2 :(得分:1)

s = 'a: 1, b: null, c: null, d: 0, e: null, f: 0.3'
r=''
for e in s.split(','):
    if (e.split(':')[1]!=' null'):
        r = r+ ',' +e

print (r[1:])