我开始学习Python,但我在使用正则表达式时遇到了一些困难。
我需要执行以下任务:
有一个变量MAX:
Max = "Max_Total:5 ,MAX_MAN:6 ,MAX_WOMEN:7 ,RELATION: In Relationship"
1)我需要在每个w + _?w +。
中添加双引号For example: "Max_Total"
2)我需要在字符串的开头和结尾添加花括号。
For example: {Max_Total:5 ,MAX_MAN:6 ,MAX_WOMEN:7 ,RELATION: In Relationship}
所以我需要得到以下结果:
{"Max_Total":5 ,"MAX_MAN":6 ,"MAX_WOMEN":7 ,"RELATION": In Relationship}
我尝试了以下代码并且它有效,但我认为我的解决方案很糟糕。任何人都可以教我任何替代解决方案(最好使用RE)?
Max = "Max_Total:5 ,MAX_MAN:6 ,MAX_WOMEN: 7,RELATION: In Relationship"
import re
Max1 =re.sub(r'^',"\"",Max)
Max2 =re.sub(r':',"\":",Max1)
Max3 =re.sub(r'^',"{",Max2)
Max4 =re.sub(r'$',"}",Max3)
Max5 =re.sub(r',',",\"",Max4)
print Max5
非常感谢!
答案 0 :(得分:1)
我不认为正则表达式是所有修改中的最佳方式。但是,您可以使用此
Max = "Max_Total:5 ,MAX_MAN:6 ,MAX_WOMEN: 7,RELATION: In Relationship"
Max = re.sub(r'^','{',Max)
Max = re.sub(r'$','}',Max)
# The following replaces Max_Total: for example with "Max_Total:"
Max = re.sub(r'([a-zA-Z_]+):', r'"\1":', Max)
我认为更好的解决方案是:
Max = "Max_Total:5 ,MAX_MAN:6 ,MAX_WOMEN: 7,RELATION: In Relationship"
Max = re.sub(r'([a-zA-Z_]+):', r'"\1":', Max)
Max = '{' + Max + '}'
\1
是指group 1
,它是括号内的一个([a-zA-Z_]+
)。
[a-zA-Z_]
匹配任何字母字符或下划线。