Regex选择介于\n和\t之间的字符,数字介于两者之间



我有下面这样的字符串:

\n0\t对于[-2.16891956e+00-1.90344695e-02 1.95943344e+00-2.27888727e+00\n-7.31571138e-01-3.84614199e-01-6.07530296e-01-4.86286044e-01]\n1\和[--768425052 0.06690284 1.53615272-1.32009947-0.529044451-0.43309262\n 0.68908978 0.08366164-0.63981813-1.54382074-0.13914643-0.12265489]\n2\锡[--1.22354347e-02-565219522e-01 5.1757838e-01-2.44256425e+00\n-9.62616026e-01-2.13537860e+00-2.82485336e-01-2.24265448e 6e-01]\n3\t来自[0.4024832

我想使用regex删除\n[数字]\t。模式应该如何?

您可以使用Python标准库中re模块的sub方法在Python中执行此操作。

re.sub方法采用一个正则表达式,并用某个值替换字符串中的所有匹配项。在这种情况下,我们将搜索封装在a和\t(\n[0-9]\t(中的所有数字,并用空格替换它们,以生成格式良好的输出。

import re
pattern = re.compile(r'\n([0-9])\t')
string = r'n0tfor [ -2.16891956e+00 -1.90344695e-02 1.95943344e+00 -2.27888727e+00n -7.31571138e-01 -3.84614199e-01 -6.07530296e-01 -4.86286044e-01]n1tand [-0.76842052 0.06690284 1.53615272 -1.32009947 -0.52904451 -0.43309262n 0.68908978 0.08366164 -0.63981813 -1.54382074 -0.13914643 -0.12265489]n2tin [ -1.22354347e-02 -5.65219522e-01 5.12757838e-01 -2.44256425e+00n -9.62616026e-01 -2.13537860e+00 -2.82485336e-01 -2.24265486e-01]n3tfrom [-0.4024832'
new_string = re.sub(pattern, ' ', string)
clean_string = new_string.strip().replace(r'n', '')
print(clean_string)

除了删除请求的值之外,我还使用strip()方法删除了任何前导或尾随空格,使用replace()方法删除了输出中剩余的n,从而进行了一些额外的清理。结果如下:

for [ -2.16891956e+00 -1.90344695e-02 1.95943344e+00 -2.27888727e+00 -7.31571138e-01 -3.84614199e-01 -6.07530296e-01 -4.86286044e-01] and [-0.76842052 0.06690284 1.53615272 -1.32009947 -0.52904451 -0.43309262 0.68908978 0.08366164 -0.63981813 -1.54382074 -0.13914643 -0.12265489] in [ -1.22354347e-02 -5.65219522e-01 5.12757838e-01 -2.44256425e+00 -9.62616026e-01 -2.13537860e+00 -2.82485336e-01 -2.24265486e-01] from [-0.4024832