所以。我有一个字符串,需要替换被"
到,
包围的每个;
(例如;
在"CANDIES,CHOC,DK,NFS (45-59% CACAO SOL 90%**!!!;!!!** 60-69% CACAO SOL"
中)
代码
import re
a = '19905;"CANDIES,CHOC,DK,NFS (45-59% CACAO SOL 90%; 60-69% CACAO SOL";1;550;5,09;32,2;1,74;59,97;7,2;46,14;57;8,13;152;214;568;23;2,11;1,076;1,44;3,5;0;0,026;0,051;0,747;0,304;0,041;0;0;0;0;27,6;0,23;49;2;0;7;25;1;0;31;0,55;0;0;8;18,993;9,801;1,107;7;28,35;1 oz;127;1 bar;0'
print(re.sub('"[^"]*(;)[^"]*"', ',', a))
唯一的问题是它输出
19905;,;1;550;5,09;32,2;1,74;59,97;7,2;46,14;57;8,13;152;214;568;23;2,11;1,076;1,44;3,5;0;0,026;0,051;0,747;0,304;0,041;0;0;0;0;27,6;0,23;49;2;0;7;25;1;0;31;0,55;0;0;8;18,993;9,801;1,107;7;28,35;1 oz;127;1 bar;0
而不是
19905;"CANDIES,CHOC,DK,NFS (45-59% CACAO SOL 90%, 60-69% CACAO SOL";1;550;5,09;32,2;1,74;59,97;7,2;46,14;57;8,13;152;214;568;23;2,11;1,076;1,44;3,5;0;0,026;0,051;0,747;0,304;0,041;0;0;0;0;27,6;0,23;49;2;0;7;25;1;0;31;0,55;0;0;8;18,993;9,801;1,107;7;28,35;1 oz;127;1 bar;0
为什么它会替换整个匹配的部分
"CANDIES,CHOC,DK,NFS (45-59% CACAO SOL 90%, 60-69% CACAO SOL" --> ,
如果在
"..."
中只有一个;
要替换,那么可以使用其中
(...)
放在需要保留的零件周围,然后在替换中使用占位符\1
和\2
。你知道吗见this Python demo。你知道吗
否则,使用
用逗号替换双引号子字符串中的所有
;
。见another Python demo。你知道吗你可以试试这个
我也可以说,regex中的
"[^"]*(;)[^"]*"
匹配双引号内的所有字符串,并用,
替换它,这样就产生了这样的输出。你知道吗相关问题 更多 >
编程相关推荐