How to replace "key": value pairs in string with key: value (remove quotes from key)?

Viewed 177

I need to remove quotes in string from keys. Here is a code:

import re
mystr = '["key": val, "key2": val, "key3": v, "key5": 34, "key6": "ef"]'

key_pattern = "(\"(?P<key>\w+)\": )"
pattern = re.compile(key_pattern)
print(re.sub(pattern, "\key", mystr))

This is not working. I need to get the result:

mystr = '[key: val, key2: val, key3: v, key5: 34, key6: "ef"]'
1 Answers

You can use

"(\w+)"(?=:)

See the regex demo. Details:

  • " - a " char
  • (\w+) - Group 1: one or more letters, digits, _
  • " - a " char
  • (?=:) - the next char must be :

See the Python demo:

import re
mystr = '["key": val, "key2": val, "key3": v, "key5": 34, "key6": "ef"]'
key_pattern = '"(\w+)"(?=:)'
print(re.sub(key_pattern, r"\1", mystr))
# => [key: val, key2: val, key3: v, key5: 34, key6: "ef"]
Related