pandas read_table 带有正则表达式分隔符,因为负数没有插入空格
pandas read_table with regex delimiter, since negative numbers don't have intervening whitespace
我正在尝试使用 read_table
函数将 space 分隔的 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' ', file_contents)
匹配
(\d)
- 第 1 组:一个数字
(-\d*\.)
- 第 2 组:一个连字符,然后是 0+ 个数字,后跟一个句点。
</code> 和 <code>
是占位符,它们引用替换模式中存储在第 1 组和第 2 组内存缓冲区中的值(因此,第 1 组和第 2 组的值被粘贴回生成的字符串中) .
参见regex demo。
然后,您可以使用 r'\s+'
正则表达式作为 sep
值来读取 table.
我正在尝试使用 read_table
函数将 space 分隔的 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' ', file_contents)
匹配
(\d)
- 第 1 组:一个数字(-\d*\.)
- 第 2 组:一个连字符,然后是 0+ 个数字,后跟一个句点。</code> 和 <code>
是占位符,它们引用替换模式中存储在第 1 组和第 2 组内存缓冲区中的值(因此,第 1 组和第 2 组的值被粘贴回生成的字符串中) .
参见regex demo。
然后,您可以使用 r'\s+'
正则表达式作为 sep
值来读取 table.