使用Python中的正则表达式在字符串中添加不同的符号

时间:2017-11-12 13:45:05

标签: python regex

我开始学习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

非常感谢!

1 个答案:

答案 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_]匹配任何字母字符或下划线。