我有一个字符串,其中有一些属性可能为空:
[attribute1=value1, attribute2=, attribute3=value3, attribute4=]
使用python我需要使用值'None'来清空空值。我知道我可以使用string.replace('=,','=None,').replace('=]','=None]')
作为字符串,但我想知道是否有办法使用正则表达式,可能使用?P<name>
选项。
答案 0 :(得分:0)
您可以使用
import re
s = '[attribute1=value1, attribute2=, attribute3=value3, attribute4=]'
re.sub(r'=(,|])', r'=None\1', s)
\1
是括号中的匹配项。
答案 1 :(得分:0)
使用python的re
模块,您可以执行以下操作:
# import it first
import re
# your code
re.sub(r'=([,\]])', '=None\1', your_string)
答案 2 :(得分:0)
您可以使用
s = '[attribute1=value1, attribute2=, attribute3=value3, attribute4=]'
re.sub(r'=(?!\w)', r'=None', s)
这是有效的,因为否定前瞻 (?!\w)
会检查=
字符不是后跟'word'字符。正则表达式中“单词字符”的定义通常类似于“a到z,0到9,加上下划线”(不区分大小写)。
根据您的示例数据,似乎所有属性值都与此匹配。如果值可能以逗号(不太可能),可能被引用或可能以其他任何东西开头,它将无法工作。如果是这样,您需要更加简单的设置,例如从开始解析:通过找到第一个=
字符来跳过属性 name 。
答案 3 :(得分:0)
具体并使用字符类:
import re
string = "[attribute1=value1, attribute2=, attribute3=value3, attribute4=]"
rx = r'\w+=(?=[,\]])'
string = re.sub(rx, '\g<0>None', string)
print string
# [attribute1=value1, attribute2=None, attribute3=value3, attribute4=None]