我正在尝试使用 read_table 函数将空格分隔的表格(下面的示例)读取到 pandas 数据框中。
1 0.00000E+00-7.52896E-04 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00 1.00247E-01 0.00000E+00
9 2.57945E+00-9.98377E-04 0.00000E+00 1.80923E+02 0.00000E+00 0.00000E+00 1.08995E+03 0.00000E+00 0.00000E+00 1.00795E+01 1.00002E-01 0.00000E+00
18 2.37285E+00-2.20000E-01 0.00000E+00 1.81079E+02-5.53001E+00 0.00000E+00 1.30827E+03 2.01207E+03 0.00000E+00 9.87285E+00 8.64615E-01 0.00000E+00
然而,问题是负值出现时没有分隔符,例如
1.81079E+02-5.53001E+00
以下两个选项不会生成所需的输出:
t=pds.read_table(filepath, sep='\s+|\d\-\d', engine='python')
t=pds.read_table(filepath, sep='(\s+|\d\-\d)', engine='python')
非常感谢任何帮助!
请您参考如下方法:
您可以先在负值前添加空格
file_contents = re.sub(r'(\d)(-\d*\.)', r'\1 \2', file_contents)
匹配
(\d)- 第 1 组:一个数字(-\d*\.)- 第 2 组:一个连字符,然后是 0+ 个数字,后跟一个句点。\1和\2是占位符,它们引用替换模式中存储在第 1 组和第 2 组内存缓冲区中的值(因此,粘贴第 1 组和第 2 组的值回到结果字符串)。
参见 regex demo .
然后,您可以使用 r'\s+' 正则表达式作为 sep 值来读取表格。
