如何使用regex在python中的单词周围添加引号?

2024-05-29 03:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下json类型的字符串文本

blockAddress:{strandId:"C1DYN7Cag8oDCRRoIJ1uAz",
sequenceNo:68794},
transactionId:"AYj8Vf4kQ9EE6BJJbvt3js",
blockTimestamp:2019-12-03T08:00:04.899000001Z,
blockHash:{{gdOVqf7AsgaQf90ZK1Hsva2lzPckHnxGmm3plDRBeGA=}},
entriesHash:{{n8oUjERAqT9kL+Cr59P6UPJbIdyPvaP0R9ey9+Njdzc=}}

我想在一个有[a-zA-Z]字符并以冒号(:)符号结尾的单词周围加上引号(“”)。你知道吗

那么我上面的字符串需要如下所示:

"blockAddress":{"strandId":"C1DYN7Cag8oDCRRoIJ1uAz",
"sequenceNo":68794},
"transactionId":"AYj8Vf4kQ9EE6BJJbvt3js",
"blockTimestamp":2019-12-03T08:00:04.899000001Z,
"blockHash":{{gdOVqf7AsgaQf90ZK1Hsva2lzPckHnxGmm3plDRBeGA=}},
"entriesHash":{{n8oUjERAqT9kL+Cr59P6UPJbIdyPvaP0R9ey9+Njdzc=}}

我正在尝试这个re.sub(r'([a-zA-Z]+:)', r'"\1"', s)。但我在冒号后面有引号。就像

"blockAddress:"{"strandId:""C1DYN7Cag8oDCRRoIJ1uAz",
"sequenceNo:"68794},
"transactionId:""AYj8Vf4kQ9EE6BJJbvt3js",
"blockTimestamp:"2019-12-03T08:00:04.899000001Z,
"blockHash:"{{gdOVqf7AsgaQf90ZK1Hsva2lzPckHnxGmm3plDRBeGA=}},
"entriesHash:"{{n8oUjERAqT9kL+Cr59P6UPJbIdyPvaP0R9ey9+Njdzc=}}

我需要在上面的正则表达式中更改什么?或者在python中有什么不同的方法吗?你知道吗


Tags: 字符串zatransactionidblockhashsequencenoblocktimestampblockaddressentrieshash
3条回答

使用前瞻断言:

re.sub(r'([a-zA-Z]+)(?=:)', r'"\1"', input)

听起来你想要的是:

re.sub(r'([a-zA-Z]+):', r'"\1":', s)

Regex101

txt = '''blockAddress:{strandId:"C1DYN7Cag8oDCRRoIJ1uAz",
sequenceNo:68794},
transactionId:"AYj8Vf4kQ9EE6BJJbvt3js",
blockTimestamp:2019-12-03T08:00:04.899000001Z,
blockHash:{{gdOVqf7AsgaQf90ZK1Hsva2lzPckHnxGmm3plDRBeGA=}},
entriesHash:{{n8oUjERAqT9kL+Cr59P6UPJbIdyPvaP0R9ey9+Njdzc=}}'''

import re

print( re.sub(r'([a-zA-Z]+):', r'"\1":', txt) )

印刷品:

"blockAddress":{"strandId":"C1DYN7Cag8oDCRRoIJ1uAz",
"sequenceNo":68794},
"transactionId":"AYj8Vf4kQ9EE6BJJbvt3js",
"blockTimestamp":2019-12-03T08:00:04.899000001Z,
"blockHash":{{gdOVqf7AsgaQf90ZK1Hsva2lzPckHnxGmm3plDRBeGA=}},
"entriesHash":{{n8oUjERAqT9kL+Cr59P6UPJbIdyPvaP0R9ey9+Njdzc=}}

相关问题 更多 >

    热门问题