如何将文本表转换为熊猫数据框?

E. *_*nci 2 python pandas

我有一个像这样的字符串的文本表,它很长。它也可以写入文件,

+--------------+----------+---------+------------+
| Endpoint     | Table    | Request | Is Updated |
+--------------+----------+---------+------------+
| /api/test1   | test1    | True    | True       |
+--------------+----------+---------+------------+
| /api/test2   | test2    | False   | False      |
+--------------+----------+---------+------------+
| /api/test3   | test3    | False   | True       |
+--------------+----------+---------+------------+
Run Code Online (Sandbox Code Playgroud)

我想将其转换为熊猫数据框。这是我的预期输出:

+--------------+----------+---------+------------+
| Endpoint     | Table    | Request | Is Updated |
+--------------+----------+---------+------------+
| /api/test1   | test1    | True    | True       |
+--------------+----------+---------+------------+
| /api/test2   | test2    | False   | False      |
+--------------+----------+---------+------------+
| /api/test3   | test3    | False   | True       |
+--------------+----------+---------+------------+
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Chr*_*s A 8

IIUC,用于re.sub替换正则表达式并io.StringIO阅读:

import re
from io import StringIO


text = """
+--------------+----------+---------+------------+
| Endpoint     | Table    | Request | Is Updated |
+--------------+----------+---------+------------+
| /api/test1   | test1    | True    | True       |
+--------------+----------+---------+------------+
| /api/test2   | test2    | False   | False      |
+--------------+----------+---------+------------+
| /api/test3   | test3    | False   | True       |
+--------------+----------+---------+------------+
"""

df = pd.read_csv(StringIO(re.sub(r'[-+|]', '', text)), sep='\s{2,}', engine='python')
print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

     Endpoint  Table  Request  Is Updated
0  /api/test1  test1     True        True
1  /api/test2  test2    False       False
2  /api/test3  test3    False        True
Run Code Online (Sandbox Code Playgroud)

  • 只是想:“\s\s+”不是更好地表达为“\s{2,}”吗? (2认同)