我正在尝试使用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')
非常感谢任何帮助!
答案 0 :(得分:2)
您可以先使用
在负值之前添加空格file_contents = re.sub(r'(\d)(-\d*\.)', r'\1 \2', file_contents)
匹配
(\d)
- 第1组:数字(-\d*\.)
- 第2组:连字符,然后是0+数字,后跟句点。\1
和\2
是占位符,它们从替换模式引用存储在第1组和第2组内存缓冲区中的值(因此,将第1组和第2组值粘贴回结果字符串中)。 / LI>
请参阅regex demo。
然后,您可以使用r'\s+'
正则表达式作为sep
值来阅读表格。