如何为字符串格式列表内的字符串添加引号?正则表达式该如何调整?
问题原因
- 你写的正则
r',(\w*)'只匹配逗号后方的内容,列表第一个元素abc前没有逗号,不会被匹配到,自然不会加引号 - 逗号和下一个元素之间有空格,
\w*无法匹配空格,最终分组\1捕获到的是空值,才会出现"" bca的错误输出
解决方法
不需要匹配逗号,直接匹配所有列表元素的内容(连续的\w字符),直接替换为带引号的格式即可,调整后的代码如下:
import re input_str='[abc, bca]' output_str = re.sub(r'(\w+)', r'"\1"', input_str) print(output_str)
运行后输出就是你需要的["abc", "bca"]。
如果你的列表元素可能包含横杠、点这类不属于\w的字符,可以调整匹配规则,匹配除了方括号、逗号、空格之外的所有字符,兼容性更强:
output_str = re.sub(r'([^,\[\]\s]+)', r'"\1"', input_str)
内容的提问来源于stack exchange,提问作者AlSub
相关产品推荐
相关产品推荐

