整个文件包含如下所示的行。
\"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)
但我不太确定如何保留原始字符串但只删除一个字符。
答案 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\"