Python:使用正则表达式从字符串中删除字符

时间:2016-01-07 10:59:40

标签: python regex python-3.x

整个文件包含如下所示的行。

\"ansText\" : \"11\",
\"boundsX\" : 0,
\"string\" : \"11\"

对于以title开头的所有行,我想从其后的字符串中删除字符;。以下是预期输出的示例

输入:

\"title\" : \"244442424268391(:)7)$(.:$?3.&!&3$83;767:2\",

输出:

\"title\" : \"244442424268391(:)7)$(.:$?3.&!&3$83767:2\",

我知道如何使用以下方法设置正则表达式来查找表达式标题:

 str0 = re.sub(r'\"title.*',"\"title\" : ",str0) 

但我不太确定如何保留原始字符串但只删除一个字符。

2 个答案:

答案 0 :(得分:2)

您可以在没有RegEx的情况下使用str.replace()str.startswith()来执行此操作:

>>> str0 = r'\"title\" : \"244442424268391(:)7)$(.:$?3.&!&3$83;767:2\",'
>>> str0 = str0.replace(';', '') if str0.startswith(r'\"title\" : ') else str0
>>> str0
'\\"title\\" : \\"244442424268391(:)7)$(.:$?3.&!&3$83767:2\\",'

答案 1 :(得分:0)

您可以使用类似的内容:(\\"title\\" : \\".+?);(.+?\\")(示例here)并将字符串替换为正则表达式组编号1和2.此表达式将查找包含\"title\"和{的字符串{1}}中的字符并使用此信息创建两个正则表达式组,给定;,输出将为:;

\"title\" : \"244442424268391(:)7)$(.:$?3.&!&3$83;767:2\",

当你组合这两个字符串时,你将得到你想要的结果。

Group 1: \"title\" : \"244442424268391(:)7)$(.:$?3.&!&3$83
Group 2: 767:2\"