我想在数据文件中搜索字符串的一部分并替换它。
如果感兴趣的部分的确切文本是已知的,那么这样做没有问题,但如果确切文本不完全已知,我似乎无法做到这一点。
字符串的内容可能不同(可能是数字或名称或混合)。
字符串从文件中读取,替换,然后写回文件。
我尝试了许多正则表达式语法的组合,并接近,但从来没有我需要的。
我想用0.0 0.0(无逗号)替换感兴趣部分中的任何/所有数字对
**示例:下面代码的 * 结果 * 为:
The Original String
(cat 5.34 8.763) kenneled in:
The Replaced String
(dog 0.0 0.0)5.34 8.763) kenneled in:
我希望替换的字符串为:
(dog 0.0 0.0) kenneled in:
下面是我的代码尝试:
data = '(cat 5.34 8.763) kenneled in:' # Section of the String
pattern = '[(cat *? )]+' # test the String
repl = '(dog 0.0 0.0)' # replace it with this
print('The Original String')
print(data + '\n')
result = re.sub(pattern, repl, data, count=1)
print('The Replaced String')
print(result)
一切都很好,直到我选择了一个包含多个类似字符串的文件-这些额外的字符串可以是不同的/类似的/相同的,我 * 不 * 希望他们改变。
问题是:所有文本/内容都被删除-所有文本(除了第一个字符串)都被删除。
我添加了count=1
,但它不工作...
data = re.sub(r"[^(]+ \d+\.?\d* \d+\.?\d*", "at 0.0 0.0", s1, count=1)
我想保留而不受影响的文本示例:
(hound (cat 3.34 5.67)
(hound (cat 3.37 1.67)
(hound (cat 9.85 4.3)
(puppy (cat 6.76 0.123)
1条答案
按热度按时间brgchamk1#
IIUC,将正则表达式更改为(regex101 demo):
图纸: